Categories
程式開發

當 DDD 遇上 DCI(Data, Context, Interactive)架構模式丨Archsummit


DCI是數據、場景、交互(Data、Context、Interactions)簡稱,重點是關注數據的不同場景的交互行為,是面向對象系統狀態和行為的一種範式設計;DCI在許多方面是許多過去範式的統一,多年來這些模式已經成為面向對象編程的輔助工具。

問題背景:

電信軟件的功能複雜特性交叉,對實時性和數據一致性的要求比較高,代碼規模比較大,同時處理大量並發活動。

解決方案選型:

1.領域建模+貧血模型;

2.領域建模+充血模型;

3.領域建模+DCI。

方案介紹:

選擇“領域建模+DCI”,將類和對像看成不同的事物。類作為一種模塊化手段,遵循高內聚,低耦合,讓軟件易於應對變化;將類看做是領域對象擁有的職責或扮演的角色,對像作為一種領域對象的的直接映射,解決了過多的類帶來的可理解性問題,讓領域可以指導設計,設計真正反映領域。如果使用 C++ 語言來實現的話,可以通過多重繼承的方式來完成職責 ROLE 的組合 ;如果使用Go語言來實現的話,可以通過依賴注入的方式完成職責 ROLE 的組合。

實施後效果說明:

DCI 可以和 DDD 融合在一起,基於職責的組合式設計提高了代碼的可理解性和應對變化的能力,而且對於開發人員來說 DCI 帶來的收益比 DDD 更大。

內容大綱:

1、DCI 架構模式

  • Data,Context,Interaction
  • 優缺點

2、DCI 是 DDD 的補充

  • 類與對象的關係
  • DCI 與 DDD 的融合
  • ROLE 的建模
  • 數據依賴管理
  • 領域模型各部分的可組合性

3、實踐案例

  • 案例介紹
  • 物理設計
  • 領域模型設計
  • 代碼實現要點

4、小結

  • DCI 與 DDD 的融合
  • 審視類與對象的關係
  • DCI 落地的核心是 ROLE 的建模
  • 對於開發人員來說 DCI 的收益比 DDD 更大

聽眾受益:

1、理解 DCI 架構模式

2、明白 DDD 和 DCI 的關係

3、清楚團隊基於 DDD 落地 DCI 的方法