【问题标题】:Associations' traversal direction关联的遍历方向
【发布时间】:2012-03-21 12:41:23
【问题描述】:
我正在阅读 Eric Evans 的关于领域驱动设计的书 - 第 5 章,关于关联 .他降低模型复杂性的建议之一是为关联强加一个遍历方向。
我引用:
尽可能限制关系很重要。一个
双向关联意味着两个对象都可以理解
只有在一起。当应用需求不需要遍历时
在两个方向上,添加一个遍历方向减少
相互依存并简化设计。了解域
可能会显示出一种自然的方向偏差。
如何选择关联的遍历方向?通常,当两个元素之间存在关联时,可以从两个方向阅读和理解。什么可能导致我们选择一个方向而不是另一个方向?
谢谢
【问题讨论】:
标签:
domain-driven-design
uml
【解决方案1】:
当实体 A 和实体 B 之间存在关联时,您通常会发现自己只使用 A.B 而从不使用 B.A。这可能是因为 A 是一个聚合根,并且始终是您的起点,因为无论您在何处操作 B 等,您都已经拥有对其 A 的引用。
我猜 Evans 只是建议您只在需要时添加遍历方向,然后在代码中使用它,而不是过早地添加遍历方向“以防我们以后需要它”。
【解决方案2】:
从概念上讲,所有关联都是双向的。然而,当实现它们时,大多数最终都是单向的,从那时起您只需要在其中一个参与者中维护链接。
在设计过程中,您可能希望在实现层面打破双向性,方便系统的编码