2010-12-12 129 views
1

非集合內的實體可以持有對根集合的引用。或者,根聚合只能持有對其子實體的引用。根集合參考問題

回答

6

聚合中的實體可以持有對聚合根的引用。

聚合中的實體也可以持有對其他外部聚合根的引用。

外部對象可能不包含對聚合內部實體的引用。外部對象只能引用聚合根,不能引用內部對象。

只應從查詢/存儲庫返回聚合。

集合應創建爲整個集合,通常使用工廠。

+0

我可以使用IOC創建聚合,我的意思是我可以在ddd中使用IOC。在服務層中創建對象而不是工廠。 – kamal 2010-12-12 20:30:12

+0

複雜的問題。服務是應用程序中的活動源,因此通常是最終導致創建對象的操作的來源。您必須區分機械師的要求和創建對象的責任,即實際的施工代碼本身。沒有什麼比領域對象創建的知識更親密或更詳細,並且這是領域模型的一部分。因此,雖然服務可能需要創建對象,但實際上將創建代碼放在服務層中會泄漏領域層知識,並創建緊密耦合的服務層。 – Sisyphus 2010-12-16 15:56:04

+0

你能澄清你的意思嗎?「外部對象」是否將MVVM範例中的ViewModel視爲「外部對象」,還是更具體地指向域層中的對象? – jpierson 2012-08-24 16:24:54