协会的遍历方向

时间:2012-03-21 12:41:24

标签: domain-driven-design uml

我正在阅读关于关联 Eric Evans 第5章域驱动设计一书。他降低模型复杂性的建议之一是为关联强加一个遍历方向。

我引用:

  

尽可能地约束关系很重要。一个   双向关联意味着可以理解这两个对象   只有在一起当应用程序要求不要求遍历时   在两个方向上,添加遍历方向减少   相互依赖,简化设计。了解域名   可能会发现自然的方向性偏见。

如何为关联选择遍历方向?通常,当两个元素之间存在关联时,可以在两个方向上阅读和理解它。什么可能导致我们选择一个方向而不是另一个?

由于

2 个答案:

答案 0 :(得分:5)

当实体A和实体B之间存在关联时,您经常会发现自己只使用A.B而不是B.A.这可能是因为A是一个聚合根,并且始终是你的起点,因为无论你操纵B等等,你都已经有了对它的引用。

我猜Evans只是建议您只在需要时添加遍历方向,并在之后的代码中使用它,而不是过早地添加遍历方向“以防我们以后需要它”。

答案 1 :(得分:4)

从概念上讲,所有关联都是双向的。然而,在实现它们时,大部分最终都是单向的,因此您只需要在其中一个参与者中维护链接。

在设计过程中,您可能希望指出在实现级别打破双向性并促进系统编码的可行性

相关问题