知识卡片
确定值对象与实体后只需梳理实体间关系定聚合边界
内容
确定值对象与实体后,可简化对模型关系的确认——只需梳理实体之间的关系。据关系强弱确定聚合边界:合成关系(组合,如Course聚合Training、Training聚合Ticket)非常紧密,放在同一聚合;OO聚合关系(非”必须有”,如Training可配置多个Filter/ValidDate)较弱,存在OO聚合关系的实体应分到不同聚合;完全独立的实体(如BlackList)单独成聚合。若多个聚合边界的实体依赖相同值对象,可定义多个相同值对象分别放到各自聚合边界内。考虑聚合设计原则,具有独立性的实体(如Learning聚合中的Course)需分离出来定义为单独聚合。一旦确定聚合,也就确定了管理其生命周期的资源库。发散:聚合边界基本沿着”合成=同聚合、OO聚合=拆聚合”这条关系强弱线自然浮现,把关系类型标清楚,边界划分就从艺术变成了可推导的规则。
参考来源
- 位置:《解构领域驱动设计》第20章 20.3.4(源文件:_epub-src/OEBPS/033.xhtml)
- 结论依据:原文说明确定实体值对象后只梳理实体关系、据合成/OO聚合关系强弱确定聚合边界。
- 原始内容:除了合成关系,存在OO聚合关系的实体都分到不同的聚合中……如果多个聚合边界的实体依赖了相同的值对象,可以定义多个相同的值对象,然后将它们放到各自的聚合边界内。