发布于 2026-01-06 0 阅读
0

Entendendo 领域驱动设计概述 问题空间 解决方案 空间亮点 结论 参考资料

深入的领域驱动设计

概述

问题空间

解决方案空间

精彩片段

结论

参考资料

域驱动设计的原理是通过领域驱动设计软件来实现的。我在解决一些常见问题时,主要解决了一些问题和出色的设计。下一步是修改和比较我的想法。

概述

O que é, onde aplicar e Benefícios

领域驱动设计 (DDD) 是软件开发的方法。最初由 Eric Evans 于 2003 年撰写,内容为《领域驱动设计:解决软件核心的复杂性》

这是一种最有效的方法,是一种能够提高工作效率的复杂软件开发方法。详细的说明、实践和模式、DDD 不容许任何勇气、减少自定义和简化应用程序的演变,以简化悲剧的终结。我们提供了一些模型应用程序,以解决一些问题,并解决问题,使设备技术能够与一致的操作系统相结合。

O que não é, onde evitar e malfícios

开发这些科学知识是软件架构或设计模式(存储库、实体、服务、工厂等)的专有技术,这也是 DDD 所必需的。建筑模块和建筑设计的一部分是非常重要的,但它们是不可持续的,并且不是 DDD 的中心,是简单的辅助工具。 Podemos ter um sistema que Implementa todos os design Patterns sugeridos, mas não atende o negócio. Por outro lado podemos ter um design mais simplista, mas que esteja Totalmente alinhado ao domínio. DDD 不是一种设计模式,它是一种常见的设计模式,它是一种独立的应用程序,可以解决一些技术问题,但 DDD 不适用限制一些面向对象的程序范式。结论是不存在接收到的模板或实施的模板

不要考虑 DDD 在商业环境中的应用。这是受益人的应用程序。 DDD 在执行过程中有些复杂和困难。除非您需要符合应用或相关要求的资格条件,否则不得直接与谈判人员联系。

问题空间

问题空间的全部内容是指与客户端相关的区域,该区域是由软件假装的解析器组成的。解决常见问题和解决问题并解决复杂问题。

问题空间

领域

O domínio é realidade do negócio, serefer a are de conhecimento and atividade na qualização e as pessoas estão inseridas.将所有事物作为生活习惯的记录、伴奏、过程和体验。 Dominio é onde as pessoas de negócio vivem e na qual nos, desenvolvedores, não temos interferência。

领域

子域名

子域名

子域没有任何分解过程或以下类别:

我们的主要勇气、组织存在的动机、协调一致的差异,以及 20% 和 80% 的结果。 O Core Domain是主要的节奏和递归部分。 Onde os desenvolvedores mais experientes devem trabalhar e onde devemos criar o design mais rough.

电子商务项目为例,核心域销售。这是电子商务所要完成的所有事项或核心信息。电子商务支持24 小时内的核心域名运输、核心域名运输、核心域名服务、核心域名定价、以及不同企业不同域名的支持 Nosso papel aqui é mapear a realidade do negócio Existente, no tentar encaixar modelos preconcebidos nele.

支持

核心领域锻炼者的能力,是一种非功能性的组织方式,是定制的精确证明,因此不具有竞争优势。重要的是,我们必须努力做到这一点。 Aqui feito é bem feito!

我们以此类推,这些项目是与 Iria 功能系统相关的项目。 Não conseguimos Vender um produto sem um meio de pagamento, sem estoque noarmazém, sem uma boa logística, 等等。 所有这些都可提供足够的核心功能辅助功能。

通用的

请勿主要关注或不与核心域相关。解决方案是内部开发的一个解决方案,它是一个简单的功能,但没有任何问题,可以让您体验到更多的乐趣。另一种选择是针对第三种解决方案。

作为 nossas caixinhas em vermelho 代表 o que é genérico para nós。 Como o nosso foco é a venda temos que deixar algumas coisas de lado。我们提供了一些有关 SaaS 解决方案的建议,以及与 SaaS 相关的解决方案。但是,如果您想要定制 cada 客户的体验,请了解基本的基础知识 - uma API 以及 CRUD 解决方法或其他问题。

解决方案空间

解决方案空间问题空间参考。将实践和模式融入到有效的解决方案中。

解决方案空间

领域模型

O que é exatamente um “Modelo”? Segundo o Dicionário Criativo是一个后续定义:

将现象的抽象表示为研究对象的形式特征或功能。

Podemos entender então um modelo nada mais é do que uma visão/imagem que temos de um conceito. Trazendo para nosso cenário seria crariar abstrações querepresentam nosso domínio em um determinado contexto.您可以通过以下方式讨论有关术语的属性以及有关潜在问题的其他问题。 Ele é fruto da colaboração。主要用途是与处理过程进行比较。总结一下,领域模型是领域解决方案的实现

领域模型

分析模型

杜兰特作为重新统一了外科手术的想法,以图表(UML)为基础,讨论了相关概念和合作过程,并建立了分析模型。这不是技术方面的重点,也不是实施细节的开发。

代码模型

代码模型是分析模型的实现。 Eles são criados utilizando os conceitos aprendidos no modelo front. Todo o代码模型开发服务和专有的专有技术,不使用存储库、工厂、服务、管理器等模式中的名称进行开发 - 这是一个可以进行通信的方式。我们致力于利用通用语言来实现开发。

模型驱动设计

分析模型和代码模型之间罪孽过程。这是理想的 1:1 翻译方案,可以准确地实现详细技术和分析模型,而不是抽象的。在整个过程中,我们会对具体的分析过程进行详细的分析,并以明确的形式进行讨论,以确保我们在实施过程中讨论的术语术语。在实施代码模型时,设备技术人员会发现一些概念和缺陷,因此允许在重新组合期间进行新的反射和迭代过程的精炼,从而初步完成分析模型。我们将继续使用质量分析模型代码模型来进行营养分析

战略模式

战略模式不是解决问题空间和解决问题的方案。

普遍语言

Entende-se como onipresente aquilo que está em todos os lugares。您可以通过我们的语言与统治者进行有效的沟通和交流。无处不在的语言是一种设备技术合作和谈判、开发和会话期间书写、设计和实施的工具。 Ela é dividida entre os Bounded Context。这是一种语言,是一种活生生的语言,是一种进化和改进。重要的说明是关于术语中的所有事项的明确形式,请参阅所有术语表或其他文档。

Inglês ou Português?

实践中,我们推荐您使用英语,并与一种通用语言进行冲突。所有的工作都以复杂的方式发展,并且以一种习惯性的方式将关系视为一种消极的关系。

有限上下文

和子域的识别术语可以与不同的术语相关的术语进行比较。嗯产品与上下文相关销售意义 uma coisa e para o contexto运输。 Ao invés de tentar criar um modelo único, aka God Object , a ideia do Bounded Context é criar divisões entre essa linguagem, onde cada um tem o seu modelo querepresenta umaabstração do Problema, isso impede os conceitos se Misturem e que nosso software acabe se龙卷风 um BBoM

背景

Um Subdomain é algoabstrato/conceitual no qual podemos apenas discutir。嗯,有界上下文,是由软件开发出来的。我们将所有的子域都翻译成有界上下文通讯员,以实现所有这些子域的真实性。 Podemost ter N Bounded Contexts para satisfazer um Subdomain , o que ira guiar a divisão Neste caso é a Ubiqutious Language .开发一些关于限界上下文的内容可能会涉及到子域,即单一责任原则,这可能是一个可以改变的动机。

请继续关注子域名,并组织项目。 Dentro de Customer podemos ter um Bounded Context chamado User que irá tratar do Nome, Endereços, Formas de Pagamento, Avatar, etc;帐户限界上下文包含电子邮件、密码、角色、声明等。销售订单定价购物等都与服务的限界上下文有关。

App
  ├── Billing
  ├── Catalog
  ├── Customers
  │ ├── Account
  │ └── User
  ├── Sales
  │ ├── Orders
  │ ├── Pricing
  │ └── ShoppingCart
  ├── Shipping
  └── Warehouse
Enter fullscreen mode Exit fullscreen mode

Tome cuidado para não dividir os Bounded Contexts pelos bados and reuso, infelizmente nos como desenvolvedores temos esse habito.在有界上下文存在错误,导致模型不一致,并且无法避免系统的演变。有界上下文是一个比较困难的问题,需要在实现之前进行研究!

有界上下文是微服务应用程序划分的主要领域的推荐。

上下文地图

您可以通过识别声音和应用程序的上下文来进行交流,并在社区中进行交流。Context Maps nos ajudam a entender melhor a barreira entre os Bounded Context e Visualizar como eles interagem entre si. Há alguns models para a comunicação entre os contextos de maneira eficiente, porém irie commentar apenas dois dois principais:

共享内核

在一些特定的情况下,子域、模型和边界上下文应用程序都已完成,但最终没有出现重复的情况,并且与边界上下文相关的问题也没有解决

共享内核

Podemos 是销售核心的示例也是产品基础模型的示例

App/Sales
├── Core
├── Orders
├── Pricing
└── ShoppingCart
Enter fullscreen mode Exit fullscreen mode

反腐败层

您可以使用有界上下文来连接Ubiquios 语言,但它不包含外部模型,或者是其他系统中的部分。在此情况下,我们可以在有界上下文和依赖项之间进行中介。在接口定义中,我们可以实现新的camada和traduzir或retorno de chamadas de outros Bounded Contexts para nosso。目的是利用透明形式的外部递归和类似的形式。

反腐败层

Em Billing temos uma camada chamada Integration que será responsável por obter bados de Customer , que está dentro do Bounded Context User .您可以通过外部页面的 API 来响应通讯。

App/Billing
├── src
│ ├── Domain
│ └── Integration
└── tests
Enter fullscreen mode Exit fullscreen mode

精彩片段

Colaboração

这是军政府的权力和斗争的基本原则。有时,我们会进行合作,并不断地进行外部合作,以实现更多的复杂性,并持续不断地发展新的管理方式。

Foque no Core-Business

任何应用程序均不得与消息相关。 DDD 不允许您公开解决问题并努力解决问题,并直接开发对实际影响的操作系统进程,以帮助我们获得软件成功的机会。

恒定演化

这不是重要的体验,也不是地图和设计的完美开始。 O processo para destilar o domínio and criar modelos que o representamé iterativo. Além do que conceitos podem e vão mudar, novas necessidades irão surgir and precisamos ficar atentos para alinhar nosso design com o negócio. Podemos ter um sistema 1:1 no começo, porém se não darmos continuidade nas práticas e processos do DDD em alguns meses estaremos defasados. DDD 需要持续维护!

结论

我们提供了一些示例,包括 DDD 和假装解析器的软件。自然而然地,你会享受到真正的 DDD 体验,并开始与工作相关的工作、工作和精炼、合作、结束。理解 DDD 不适用于理解新的语言或框架,涉及多项软技能和重复重复。解决问题时需要考虑的问题可能是由于 DDD 吸收器的细微差别而导致的。建议继续学习,抓住机会,从实践中获得更多经验。

Irei falar mais sobre DDD nos próximos artigos onde abordarei os战术模式架构模式

参考资料

文章来源:https://dev.to/guisfits/easycommerce-01-introducao-ao-ddd-kik