ddd概述
1. 有界上下文
您无需将其拆分为更小、更易于管理的部分,而不是拥有一个庞大而复杂的域。
每个部分都有其独特的模型和边界。
有界上下文通过隔离域的不同部分来防止冲突和混乱。
2.反腐败层:
保护有界上下文免受外部影响。这些可以是使用不同模型的外部系统或域。
它确保内部模型保持清洁且不受影响。
3. 实体
域中的实体:
- 具有独特的身份
- 可以随着时间的推移而改变
实体是领域模型的核心构建块。
4. 值对象
值对象:
- 不可变
- 没有明确的身份
- 用值表示
我们使用 Value 对象来建模实体或其他领域概念的属性。
5. 骨料
聚合将相关实体和值对象分组为单个一致性单元。
根实体是访问和更改内部对象的网关。
其目的是在有界上下文内维护数据一致性。
6. 领域事件
领域事件代表领域内的重大状态变化。
它们在应用程序内或有界上下文之间传达更改并触发操作。
重要提示:用过去时命名。
7. 工厂
工厂负责创建复杂的域对象。
它们封装了创建这些对象所需的逻辑并确保它们处于有效状态。
8. 服务
域服务包含不属于任何实体的域规则。
它们是无状态的,并在域模型上运行以执行特定任务。
您可以注入存储库或工厂来获取您需要的任何数据。
有些人会反对这一点,但我认为这是可以接受的。
只要你依赖于抽象。
9. 存储库
存储库提供了一种访问和管理聚合(或实体)的方法。
它们是应用程序代码和数据存储之间的桥梁。
为什么我喜欢使用存储库?
他们帮助我编写更多可测试的代码