🎯 什麼情境該想到我

當一群關係緊密的物件必須「一起保持一致」(例如訂單與它的訂單明細、庫存與其批次),而你不確定該把一致性與交易的邊界畫在哪、對外又該從哪個物件進去操作時。

⚙️ 怎麼用(步驟 / 公式)

意圖:把一組實體與值物件框成一個一致性邊界,對外只透過聚合根存取。

  1. 找出天然要一起維持不變式的實體與值物件,圈成一個聚合。
  2. 指定其中一個實體為聚合根:它是唯一對外入口,外部只能持有並操作聚合根。
  3. 一次交易只保證單一聚合內的一致性——聚合內同步強一致。
  4. 跨聚合的關係用 ID 參照,不直接持有對方物件;跨聚合一致性走最終一致(如領域事件)。
  5. 讓聚合盡量小:邊界越小,並發衝突與交易範圍越可控。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 聚合太大會造成交易鎖範圍過廣、並發衝突多、載入成本高。
  • 想在一次交易改多個聚合通常是邊界畫錯的訊號——改用事件做最終一致。
  • 外部繞過聚合根直接動內部物件,會讓不變式失守。

🔗 相關工具