聚合
参考文档
- 从壹开始微服务[DDD]之六-聚合与聚合根(下)
- 通用语言转化领域模型的方法:对号入座法之聚合
- 通用语言转化领域模型的方法:对号入座法之工厂
- 利用工厂进行复杂领域对象的创建
- DDD-领域工厂的调用时机
- 后端开发实践系列——领域驱动设计(DDD)编码实践
聚合
根据 参考文章 所描述的聚合实现有如下两种方案:
- 聚合是真实存在的对象,实体和值对象都是聚合对象的内部属性
- 实体即聚合,聚合即实体(该实体为聚合根对应的实体)
两种方案都有一定的缺陷和优势,具体分析如下:
方案 | 优势 | 缺陷 |
---|---|---|
聚合真实存在 | 聚合只负责管理实体之间的关系 | 聚合和实体的重合太多,实体对外开放的方法聚合也需要实现一遍 |
实体即聚合 | 1. 实体即聚合,聚合即实体,容易混淆实体和聚合的概念,无法让项目团队成员比较直观的理解到聚合的存在并且通过一定的规范和模式进行扩展开发 2. 容易造成长期开发后,实体的功能越来越多无法分解,变成了一个巨实体 |
我们最终采用的方案将吸收上面两种的方案的优势:
- 聚合真实存在,直观且便于扩展开发
- 聚合对象继承聚合根对应的实体,避免重复实现实体的方法