我正在阅读关于关联的 Eric Evans 第5章的域驱动设计一书。他降低模型复杂性的建议之一是为关联强加一个遍历方向。
我引用:
尽可能地约束关系很重要。一个 双向关联意味着可以理解这两个对象 只有在一起当应用程序要求不要求遍历时 在两个方向上,添加遍历方向减少 相互依赖,简化设计。了解域名 可能会发现自然的方向性偏见。
如何为关联选择遍历方向?通常,当两个元素之间存在关联时,可以在两个方向上阅读和理解它。什么可能导致我们选择一个方向而不是另一个?
由于
答案 0 :(得分:5)
当实体A和实体B之间存在关联时,您经常会发现自己只使用A.B而不是B.A.这可能是因为A是一个聚合根,并且始终是你的起点,因为无论你操纵B等等,你都已经有了对它的引用。
我猜Evans只是建议您只在需要时添加遍历方向,并在之后的代码中使用它,而不是过早地添加遍历方向“以防我们以后需要它”。
答案 1 :(得分:4)
从概念上讲,所有关联都是双向的。然而,在实现它们时,大部分最终都是单向的,因此您只需要在其中一个参与者中维护链接。
在设计过程中,您可能希望指出在实现级别打破双向性并促进系统编码的可行性