背景:
最近團隊在探討如何將DDD(領域模型)落地,當然在實現領域模型之前,得熟悉設計模式。設計模式理論上大家還比較清楚,但是在平時的開發過程中卻無法落地實踐。有的人說咱們主要是業務開發,不太適用設計模式。其實不然,還是大家對面向物件的思維不太習慣。還是習慣於面向過程(貧血模式)的思維。
知識點:
1)貧血模式和充血模式
貧血模式 (面向過程) : 適合業務簡單的系統。SQL的CRUD。 開發比較簡單和快速。
充血模式(面向物件):適合複雜系統,例如設計各種演算法模型的金融系統。開發門檻較高,需要時間進行模型設計。
實現共同點:都可以是三層模型。
實現區別:貧血重service輕BO(只是get和set方法沒有業務邏輯)
充血重BO輕service(service的作用就是連線持久層和Domain,跨領域的業務聚合,非功能性和三方系統互動)
2)實踐探索
基於團隊的現狀,可以採用貧血模式和充血模式的混合模式。
首先,還是分層結構,controller和Dao層不變。
其次,service層根據業務複雜度進行充血模式改造,service層引入Domain概念。將業務進行物件建模。(這也是最難的部分,需要理解需求,按照PRD進行建模,然後大家統一認識,不然後期容易造成物件氾濫)
3)演化過程
依據目前團隊的技術架構,可以按下面幾個步驟進行演化。
面向過程->面向物件+面向過程->面向物件(設計模式應用)->領域模型(DDD)