知识卡片
聚合:用统一业务规则组织实体和值对象,保证数据一致性
内容
[[实体的核心特征唯一标识符与延续性]]和[[值对象的核心特征无标识基于属性值不可变]]都只是个体化的业务对象,各自只表现出个体的行为和能力。聚合正是为了把这些紧密关联的个体组织起来而存在的——书中用社团组织类比:个人加入社团后按照章程和目标协同工作,发挥出比孤立个体更大的价值;聚合内的实体和值对象就像组织里的成员,聚合内部的业务规则就像社团章程,所有成员必须遵守,比如订单聚合的核心业务规则是”订单总金额等于所有商品明细金额之和”,每次修改商品数据都必须遵守这条规则,否则就会出现聚合数据不一致的问题。聚合是数据修改和持久化的基本单元:不同于传统数据模型里任何实体或表都能被随意找到并直接修改,DDD里聚合内数据的修改必须由聚合根统一组织。聚合边界比限界上下文边界更小,是根据业务单一职责和高内聚原则定义的,聚合之间是松耦合的,多个聚合同属一个限界上下文和微服务,按这种方式设计出的微服务自然就满足”高内聚,低耦合”的要求。
参考来源
- 位置:《中台架构与实现:基于DDD和微服务》第8章《聚合和聚合根:怎样设计聚合》"8.1 聚合"(源文件:_epub-src/OEBPS/Text/chapter3-4-1.xhtml)
- 结论依据:原文说明"领域模型内的实体和值对象就类似这些组织中的个体,而能让实体和值对象协同工作的组织就是聚合。聚合内部有自己的业务规则……比如,订单聚合就有自己内部的业务规则……'订单总金额等于所有商品明细金额之和。'违反了这个业务规则,就会出现聚合数据不一致等诸多问题",直接支撑本卡片结论。
- 原始内容:领域模型内的实体和值对象就类似这些组织中的个体,而能让实体和值对象协同工作的组织就是聚合。聚合内部有自己的业务规则,类似社团组织中的章程,所有成员必须遵守。