3
將域驅動設計應用於項目時,如何識別聚合根?您使用什麼方法來識別域驅動器設計中的聚合根?
例如,在標準的電子商務網站上,您可能會說訂單是一個,而用戶是另一個。 但是,如果您的用戶屬於公司,該怎麼辦?這是否使您的公司成爲了根?
我有興趣聽到人們研究聚集根的方法,以及如何識別選擇不好的聚合根。
將域驅動設計應用於項目時,如何識別聚合根?您使用什麼方法來識別域驅動器設計中的聚合根?
例如,在標準的電子商務網站上,您可能會說訂單是一個,而用戶是另一個。 但是,如果您的用戶屬於公司,該怎麼辦?這是否使您的公司成爲了根?
我有興趣聽到人們研究聚集根的方法,以及如何識別選擇不好的聚合根。
確定聚合根的一個好方法是使用「刪除」測試。在你的域名中,如果你刪除了根目錄,用它刪除了什麼?通過這種方式,您可以識別域對象所有權,這是聚合的特徵。
聚合創建一致性邊界,所以你的根,應該從對象圖的其餘部分「隱藏」聚集的元素,並檢查它們應該保持的一致性和不變量。聚合內部的對象僅保留對根的引用(不是彼此)。所以如果你在你的域模型中發現這樣的東西,它可能暗示你有一個聚集根。
沒錯,所以我有一個用戶實體,可以執行一系列操作,如進行銷售,更新他們的配置文件e.t.c.這似乎是用戶將是一個根集合。但是,公司有一組用戶。刪除公司會刪除用戶。這是否會使公司成爲聚合根,還是它們都是聚合根? – Robert 2010-05-18 21:11:22
@Robert您不必爲每個多重關聯都使用Aggregate,您可以使用例如綜合也是如此。這取決於你最適合你的需求。聚合用於簡化您的域模型,但您不必使用它。 – 2010-05-18 21:18:29