知识卡片
关联关系的处理:合成入同一聚合、OO聚合分不同聚合
内容
两实体间关联若非合成或聚合,都是松耦合,应划入不同聚合。合成是实例的”物理包容”、生命周期一致、强耦合,应优先放一个聚合(如QueryCondition无法脱离报表而存在,与Report为合成)。OO聚合是”逻辑包容”、体现概念包含却不约束生命周期,弱于合成,应优先分入不同聚合(如ReportCategory与Report生命周期不一致,删类别不删报表),这遵循”设计小聚合”原则。
参考来源
- 位置:《解构领域驱动设计》16.2.2 关联关系的处理(源文件:_epub-src/OEBPS/028.xhtml)
- 结论依据:区分合成与OO聚合对聚合边界的相反影响。
- 原始内容:将实体类的合成关系理解为类实例之间的"物理包容"……应优先考虑将它们放在一个聚合边界。……可优先考虑将两个存在OO聚合关系的实体放入不同的聚合边界。