前提
Controller層提供接口層,用于讓外部三方調用
Service層用于做邏輯處理,組裝不同業務需要的資料或者操作這些資料,BO是實體資料類也即操作的資料類
Repository:資料存儲層,比如資料庫
貧血模型
處于貧血模型的架構設計會重Service,輕Bo。是以業務邏輯主要是在Service中做的處理,BO中隻是存放資料實體的,資料和邏輯分離,是面向過程開發,對于簡單業務來說很好。
充血模型
處于充血模型的架構模式設計來說會重Domain ,輕Service。分離Service的邏輯處理,将涉及資料操作的邏輯放到Domain中抽象出來。Domain和BO的差別主要是BO隻有資料,而Domain資料和邏輯處于一塊。充血模式适合複雜業務的開發,也即面向對象開發。對于複雜業務來說,邏輯代碼會臃腫,将設計資料的操作抽出來利用之後設計,也利于更友善的支援業務。
邏輯解耦,邏輯操作隻在Domain中,Service負責通路資料提供資料。将操作資料的職責放到Domain中更容易管理,也更易擴充
精選回答
有些業務邏輯即行為本該屬于一個domain,是其一部分,是領域模型驅動而發生的行為,是以也可以稱之為領域行為。比如一個人,走路就屬于人這個領域模型驅動的行為,是屬于人的一部分,而人騎自行車,這個動作就不能歸屬給人了,自行車也是個領域模型。 而service存在的意義之一就是跨領域模型整合和互動。
隻有他能獨立完成的事情, 也就是domain object can do的事情放在領域内, 如果不是他可以獨立做的事情, 那麼不應該放在内部, 應該放在service中, 另外還有資料庫通路等, 以及事務等等都應該放在service中, 我了解的領域模型更多的是做的各司其職