iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

馬克的軟體架構小筆記系列 第 29

30-29 之 DDD 戰術篇 2 - Aggregate ( 未完成 )

什麼是 Aggregate 呢 ?

還記得我們談過的 Bounded Context 與 Entity 吧 ? 下圖這張圖就是 Aggregate 所代表的意義 :

https://ithelp.ithome.com.tw/upload/images/20211014/20089358gzujAjHRan.png

Aggregate 本來可以想成是『 業務的整體 』,基本上可以我們常聽到的事務來連聯想,也就是說這個 Aggregate 有個狀態,簡單的範例你可以想成有個訂單,然後它裡面有以下的東西 :

  • Aggregate : Order 訂單
  • Entity : Products 購買產品
  • Entity : Member 購買人
  • Entity : Mail 訂單完成信件
  • Entity : Invoice 發票

然後想成這個 order aggregate 有一個狀態可能為『 已付款 』,那這時每個 entiry 的狀態也都是要符合已付款的狀態,例如 :

  • Products : 要修改成可以給該名使用者觀看 ( 假設產品是一個線上課程 )。
  • Member : 要記錄該用戶有首次購買。( 假設業務上需要 )
  • Mail : 要發訂單完成信件,並且記錄為已發送。
  • Invoice : 要產生發票。

所以簡單總結一下 Aggregate 是什麼 :

它本身是一個業務的狀態機,它需要能『 保證達到業務狀態一致性 』的功能。

範例

參考資料


上一篇
30-28 之 DDD 戰術篇1 - Entity 與 Value Object
系列文
馬克的軟體架構小筆記29

尚未有邦友留言

立即登入留言