2012-03-21 30 views
3

我對領域驅動設計讀的書埃裏克·埃文斯 - 第5章,關於協會。他爲降低模型複雜性的建議之一是爲協會強加一個穿越方向。協會遍歷方向

我引述:

到儘可能多的約束關係是很重要的。雙向關聯意味着兩個對象只能在一起理解爲 。當應用程序要求不要求在兩個方向上遍歷 時,添加遍歷方向將減少相互依賴性並簡化設計。瞭解域 可能會揭示一種自然的方向性偏見。

如何選擇一個關聯的遍歷方向?一般來說,當兩個元素之間存在關聯時,可以在兩個方向上閱讀和理解。什麼可能導致我們選擇一個方向而不是另一個?

感謝

回答

4

當有實體A和實體B之間的關聯,你經常會發現自己只用A·B,從來沒有學士學位這可能是因爲A是一個聚合根,並且始終是您的起點,因爲無論您在何處操作B等,您都有一個對它的引用。

我猜Evans只是建議您應該只添加遍歷方向當你需要它時,會在剛纔的代碼中使用它,而不是過早地增加一個遍歷方向,「以防我們以後需要它」。

4

從概念上講,所有關聯都是雙向的。儘管如此,在實現它們時,最重要的是單向,因爲你只需要維護其中一個參與者的鏈接。

在設計過程中,您可能想要指出在執行級別打破雙向性的便捷性,並且便於系統的編碼