假設我有兩個實體User和Item。這兩個實體之間的域中唯一的行爲是用戶可以喜歡一個項目。由於對用戶可以喜歡多少項目沒有限制,因此這種多對多關係可能很大。域驅動設計:如何建模很大但行爲很少的關係
我不認爲讓用戶在其模型或其他方式中包含他們喜歡的項目列表是不明智的,因爲我將不得不加載可能大量的項目集合以便只添加一個項目。從域設計的角度來看,對於我來說,任何一個實體都可以在其領域中引用另一個實體,因爲沒有任何行爲需要存在一組項目或用戶。
我需要保持這種關係,因爲UI需要顯示用戶喜歡的項目列表以及喜歡項目的用戶列表。這個需求可以通過一個讀取模型來實現,但我仍然需要一個領域概念來捕獲這種關係,以便它能夠被持久化。
我可以想出的一種方法是引入一個聚合關係類型,比如說UserLikeItem,並讓方法user.like(item)返回一個UserLikeItem實例,然後我可以使用UserLikeItemRepository來持久化該實例。
這是一個有效的解決方案嗎? DDD的這種自然方式可以模擬這種類型的大而非行爲關係嗎?
我喜歡(雙關語!)您的解決方案,即使它不需要是'用戶'國際海事組織的方法。它還允許您捕獲其他信息,例如項目被喜歡的時間,在什麼情況下等。相同的AR可以用於不同的,但也許你需要找到一個更好的名字。 – guillaume31 2014-10-29 11:32:17
我同意,我可能會添加的唯一一件事就是爲項目添加一個「LikeCounter」,這樣您就可以顯示一個項目的總數,而不必擊中UseLikeItem數據源。 – 2014-10-29 12:13:59
交易對象或域名事件「UserLikedItem」似乎適用於您提供給我們的信息。 – 2014-11-01 14:23:24