2012-03-21 69 views
3

我对领域驱动设计读的书埃里克·埃文斯 - 第5章,关于协会。他为降低模型复杂性的建议之一是为协会强加一个穿越方向。协会遍历方向

我引述:

到尽可能多的约束关系是很重要的。双向关联意味着两个对象只能在一起理解为 。当应用程序要求不要求在两个方向上遍历 时,添加遍历方向将减少相互依赖性并简化设计。了解域 可能会揭示一种自然的方向性偏见。

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

感谢

回答

4

当有实体A和实体B之间的关联,你经常会发现自己只用A·B,从来没有学士学位这可能是因为A是一个聚合根,并且始终是您的起点,因为无论您在何处操作B等,您都有一个对它的引用。

我猜Evans只是建议您应该只添加遍历方向当你需要它时,会在刚才的代码中使用它,而不是过早地增加一个遍历方向,“以防我们以后需要它”。

4

从概念上讲,所有关联都是双向的。尽管如此,在实现它们时,最重要的是单向,因为你只需要维护其中一个参与者的链接。

在设计过程中,您可能想要指出在执行级别打破双向性的便捷性,并且便于系统的编码