2013-05-06 74 views
1

我真的很苦惱以下場景:如何確定根聚合包含太多一對多關係的時間?

比方說,我有一個用戶聚合。用戶可以創建1個以上的羣組,消息,朋友,照片畫廊等。現在,羣組,消息,朋友,照片畫廊應該分別處於自己的聚合分組中。創建一個包含IList <>屬性的用戶實體似乎是不合邏輯的,而不是僅僅具有用於組,消息,朋友,照片庫等的用戶屬性。這種方法從DDD中最有意義透視?我也在考慮實體水合,並且根據需要獲得組,消息等,而不是從用戶實體中檢索所有實體,似乎更有意義。處理這種情況的建議方法是什麼?

回答

4

即使不太瞭解您的特定業務領域,將User類作爲一種上帝與其下的所有其他內容聚合在一起聽起來也是非常錯誤的。

將您的實體分組爲具有聚合根的較大實體完全取決於您的業務是如何工作的。例如,PhotoGallery可能是一個聚合根,其下有許多Photo對象,或者PhotoGalleryPhoto都可以是單獨的聚合根。

例如,您可能會運行一家照片開發公司,其照片始終作爲完整的PhotoGallery(1個聚合根)收集,處理和處理。

或者您可以運行社交網站,其中Photo可以共享和使用,無需加載整個圖庫(2個聚合根)。

所以這真的取決於你和你的業務領域的指示。你總是可以吮吸它,看看它,看看它是如何發展的,然後再重構。

+0

看起來像下面這樣:用戶實體不會包含任何其他聚合的IList屬性,但其他聚合(即組,消息,朋友等)將包含用戶實體的屬性?對我而言,這似乎是組織上最有意義的,因爲我沒有看到用戶從用戶配置文件創建消息,組等。每個其他聚合涉及用戶界面上的不同部分。 – user1790300 2013-05-06 12:51:55

+0

您的聚合根很可能具有其他實體和值對象的集合。對於像朋友這樣的聚合,朋友可以很好地引用用戶(強耦合表示朋友的意圖始終是一個用戶的朋友),但對於消息等對象而言,將消息強烈地耦合到用戶,如果消息可能屬於您的域中的遠程系統,遊戲或其他實體等,可能並不理想。 – 2013-05-06 21:32:25

相關問題