- DDD项目结构
- 介绍
- 实体与值对象
- 聚合、聚合根(Aggregate, Aggregate Root)
- 聚合定义了一组有内聚关系的实体与值对象集合
- 原子性操作
- 70%的聚合只有一个实体, 30%有2到3个实体
- 修改聚合必须在事务级别
- 聚合根
- 是实体不能是值对象
- 是对聚合引用的唯一入口
- 聚合根删除,引用的实体不存在
- 最好单一职责,只做聚合管理
- 只有一个实体时,实体就是聚合根。多实体时思考哪个对象有独立存在的意义,且可与外部直接交互
- 聚合边界划分
- 原则
- 生命周期一致
- 问题域一致性原则
- 场景一致性原则
- 聚合尽可能小
- 领域服务(Domain Service)
- 划分原则
- 不能写到实体的业务逻辑
- 跨多实体
- 涉及外部系统交互
- 只有方法没有状态
- 相关问题
- 很薄,少业务逻辑
- 不调DAO和Repository
- 领域服务之间可互相调用,不跨Context
- 领域事件
- 领域专家所关心发生在领域中的事件
- 建模成离散事件,由领域对象表示
- 不要滥用,实体逻辑不要用事件
- 事件问题
- 优点
- 工厂(Factory)与仓储(Repository)
- 用于实体创建
- 只有聚合根才有仓储,最好只有一个
- 仓储最好只有一个saveById
- 工厂