天天看點

你知道貧血模型和充血模型是什麼嗎?

前提

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中, 我了解的領域模型更多的是做的各司其職