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 是什麽 :

它本身是一个业务的状态机,它需要能『 保证达到业务状态一致性 』的功能。

范例

参考资料


<<:  Day 29 - 用 canvas 与 fabricjs 做文件签名(下)

>>:  [Day29] 资安自学之路 小回顾

不只懂 Vue 语法:什麽是单向资料流和双向绑定?

问题回答 双向绑定(two-way data bindings)是指把画面上的 DOM 与资料透过 ...

风险暴露(risk exposure)

-ISO 31000 该问题的核心概念是如何定性或定量地分析风险,以确定风险敞口,以货币价值,得分...

[Day8] Fun with HTML5 Canvas

[Day8] Fun with HTML5 Canvas Canvas 的运用 需要用到的技巧与练习...

[DAY1] 在开始之前

Hello 大家好,我是阳光伏特家的工程师 Oscar,这是我第一次参加铁人赛!每年都想报名结果每年...

D10: 工程师太师了: 第5.5话

工程师太师了: 第5.5话 杂记: 大家写程序一定会写出BUG, 没有BUG的工程师肯定不是工程师,...