關於程式設計師如何利用設計模式(面向物件思維)實現領域建模的思考

背景:

最近團隊在探討如何將DDD(領域模型)落地,當然在實現領域模型之前,得熟悉設計模式。設計模式理論上大家還比較清楚,但是在平時的開發過程中卻無法落地實踐。有的人說咱們主要是業務開發,不太適用設計模式。其實不然,還是大家對面向物件的思維不太習慣。還是習慣於面向過程(貧血模式)的思維。

知識點:

1)貧血模式和充血模式

貧血模式 (面向過程) : 適合業務簡單的系統。SQL的CRUD。 開發比較簡單和快速。

充血模式(面向物件):適合複雜系統,例如設計各種演算法模型的金融系統。開發門檻較高,需要時間進行模型設計。

實現共同點:都可以是三層模型。

實現區別:貧血重service輕BO(只是get和set方法沒有業務邏輯)

充血重BO輕service(service的作用就是連線持久層和Domain,跨領域的業務聚合,非功能性和三方系統互動)

2)實踐探索

基於團隊的現狀,可以採用貧血模式和充血模式的混合模式。

首先,還是分層結構,controller和Dao層不變。

其次,service層根據業務複雜度進行充血模式改造,service層引入Domain概念。將業務進行物件建模。(這也是最難的部分,需要理解需求,按照PRD進行建模,然後大家統一認識,不然後期容易造成物件氾濫)

3)演化過程

依據目前團隊的技術架構,可以按下面幾個步驟進行演化。

面向過程->面向物件+面向過程->面向物件(設計模式應用)->領域模型(DDD)