知识卡片
聚合设计五步法与聚合根的四个判断标准
内容
聚合的构建遵循事件风暴驱动的五个步骤:第一步梳理特定业务场景中发生的所有业务行为,找出产生这些行为的所有实体和值对象;第二步从众多实体中找出适合作为聚合根的根实体,判断标准是——是否有独立的生命周期?是否有全局唯一ID?是否可以创建或修改其他对象?是否有专门的模块来管理这个实体?第三步根据业务单一职责和高内聚原则,找出与聚合根紧密关联的实体和值对象,组合成包含唯一聚合根的领域对象集合,即聚合;第四步理清聚合内各对象之间的引用和依赖关系,这里需要特别注意跨聚合的数据往往以值对象快照的形式存在——比如投保聚合里的投保人、被保人值对象,数据来源于客户聚合,记录的是投保那一刻的客户快照,即使未来客户聚合数据变更也不会影响这份快照,如果要拿最新数据则需要通过关联ID重新查询;第五步把多个聚合根据业务语义和上下文边界划入同一个限界上下文,完成领域建模。聚合根的四个判断标准给出的启示是:判断一个实体该不该升级成聚合根,不能只看它”重不重要”,而要看它是否具备独立管理自己和相关对象生命周期的资格——这是一个相对客观、可操作的判断依据,而不是纯主观感觉。
参考来源
- 位置:第8章《聚合和聚合根:怎样设计聚合》"8.3 聚合的设计步骤"(源文件:_epub-src/OEBPS/Text/chapter3-4-3.xhtml)
- 结论依据:原文说明"第2步,从众多实体中找出适合作为聚合对象管理者的根实体,也就是聚合根。判断一个实体是否是聚合根,你可以结合以下内容进行分析。是否有独立的生命周期?是否有全局唯一ID?是否可以创建或修改其他对象?是否有专门的模块来管理这个实体?……投保人和被保人两个值对象数据是客户数据的冗余数据,记录投保那一刻投保人和被保人的客户快照数据",直接支撑本卡片结论。
- 原始内容:判断一个实体是否是聚合根,你可以结合以下内容进行分析。是否有独立的生命周期?是否有全局唯一ID?是否可以创建或修改其他对象?是否有专门的模块来管理这个实体?