我進入DDD的第一個星期,有幾個實體定義了聚合根。如何訪問我的聚合根後面的實體?
我讀過聚合之外的任何外部實體都不能引用聚集中的實體,所以外部實體必須引用聚合根。
那麼,除非我已經錯誤地建模我的解決方案,否則我需要對聚合根後面的實體的引用。我該如何處理這種情況,還是必須對域進行改造以避免這種情況?
JD
我進入DDD的第一個星期,有幾個實體定義了聚合根。如何訪問我的聚合根後面的實體?
我讀過聚合之外的任何外部實體都不能引用聚集中的實體,所以外部實體必須引用聚合根。
那麼,除非我已經錯誤地建模我的解決方案,否則我需要對聚合根後面的實體的引用。我該如何處理這種情況,還是必須對域進行改造以避免這種情況?
JD
您可能可以改進您的模型。如果需要對聚合中的實體進行外部引用,那麼這是一個強有力的指示,表明內部實體可能是聚合根本身。
這當然是一般性的建議,因爲我不知道你的具體型號。
有關聚合設計的建議,請看paper by Vaughn Vernon。在第一部分「聚合建模」中,他特別強調了我發現非常有啓發性的聚合粒度。
謝謝你的回覆。我發現我開始將我的實體看作一個聚合根,然後我發現我有很多聚合根引用聚合根,我認爲這很好,因爲我很可能會使用存儲庫來訪問它們。這聽起來正確嗎? – 2011-12-19 09:53:01
我不完全同意第一段。我發現「聚合ID +本地(到聚合)實體ID」可以傳達到外部並在另一聚合內跟蹤。這不是一般性建議,但可能有用。 – 2011-12-19 11:15:34
@Yves,謝謝你的推薦。如果我們有一個深層的圖表,並且本地實體有多個深入的對象呢?那麼我會跟蹤什麼(所有入口對象id)? – 2011-12-19 11:55:42
看到一些代碼將有助於回答這個問題。 – 2011-12-18 20:41:58