聚合的劃分是需要細心設計的,聚合劃分時除了根據聚合本身的定義外還應該能保證聚合內部元素的一致性,當外界通過聚合根對聚合內的元素進行修改時能使改變的元素與其他元素之間保持設定的一致性,確保概念上的不變。
聚合設計大多數時候都會受到主觀因素的影響,有的人喜歡設計大聚合(聚合包含的實體和值物件數量太多),因為覺得大聚合容易獲得聚合內的其他元素,這樣做雖然表面上看起來很方便,但是存在很大的弊端,大聚合在進行資料操作時不容易控制,容易造成事務失敗,因此應該盡量設計小的聚合。
聚合a和聚合b之間存在關聯,並且在使用聚合a時,經常需要用到聚合b中元素,這時候存在兩種解決辦法,一種是讓聚合a的聚合根擁有對應的聚合b的元素引用,另一種則是在聚合b中的元素加入聚合a的聚合根的唯一標識。這兩種方法的最大區別在於前者持有引用雖然操作上十分方便但是需要付出很大代價,例如當聚合a載入時便會聚合b中的相關元素,有時候可能並不需要用到聚合b中的元素,從而導致效率上的效能損失;後者利用唯一標識來關聯則能防止上述情況的發生,聚合a載入時不會直接載入聚合b中的元素,如果需要時可通過唯一標識直接查詢。
危險的DDD聚合根
原文 危險的ddd聚合根 ddd的核心是聚合。這沒有問題,大家都認同。但關於ddd中的聚合方式,其實我還是有些擔心,下面說說我的想法,希望大家參與討論。其實當初第一次看到ddd中關於聚合根部分論述的時候,就感覺有些僵化。ddd中的聚合根的分析設計思路大致是這樣 1 業務本質邏輯分析 2 確認聚合物件...
DDD中的聚合和UML中的聚合以及組合的關係
uml 聚合關係 成員物件是整體的一部分,但是成員物件可以脫離整體物件獨立存在。如汽車 car 與引擎 engine 輪胎 wheel 車燈 light 之間的關係為聚合關係,引擎 輪胎 車燈可以脫離車而存在,比如把乙個引擎換到另乙個汽車上也可以。組合關係 也表示的是一種整體和部分的關係,但是在組合...
關於DDD的認識
引用自http www.jdon.com jivejdon forum messagelist.shtml?thread 32093 count 15 start 30 什麼是dao,repository?在repository情況下,dao其實是多餘的,repository可以完全替代dao。以j...