📌 30 秒摘要(Layer 3)
面對複雜業務,最大的敵人不是技術而是領域的複雜度。DDD 主張把重心放在「領域模型」:開發者與領域專家用同一套通用語言溝通,並讓程式碼直接反映這套語言。再用限界上下文切開大系統、用實體/值物件/聚合組織模型,讓模型在各自邊界內保持一致與清晰。
🗺 心智圖(Canvas)
領域驅動設計
Link to original
🧰 這本書給我的工具(即用快速工具)
- 工具-通用語言 — 跟業務方溝通、命名領域概念時
- 工具-限界上下文 — 大系統該怎麼切分時
- 工具-實體值物件與聚合 — 設計領域模型結構時
📖 完整型錄(詳解在 reference/)
🧱 建構元件 Building Blocks
- 實體 Entity、值物件 Value Object、聚合 Aggregate、儲存庫 Repository、工廠 Factory、領域服務 Domain Service、領域事件 Domain Event、模組 Module、規格 Specification
🗺 戰略設計 Strategic Design
- 通用語言 Ubiquitous Language、限界上下文 Bounded Context、上下文對應 Context Map、核心子領域 Core Domain、支撐子領域 Supporting Subdomain、通用子領域 Generic Subdomain
🔗 上下文對應模式 Context Map Patterns
- 合作關係 Partnership、共享核心 Shared Kernel、客戶-供應商 Customer-Supplier、追隨者 Conformist、防腐層 Anticorruption Layer、開放主機服務 Open Host Service、發布語言 Published Language、各行其道 Separate Ways、大泥球 Big Ball of Mud
✨ 關鍵重點(Layer 1–2)
- 模型驅動設計:程式碼與領域模型緊密對應,模型即設計。
- 通用語言(Ubiquitous Language):團隊與專家共用同一套詞彙,貫穿討論與程式碼。
- 限界上下文(Bounded Context):明確劃定某模型有效的邊界;跨界用 Context Map 對應。
- 建構區塊:Entity(有身分)、Value Object(無身分只看值)、Aggregate(一致性邊界)、Repository、Factory、Service。
- 精煉:區分核心領域與支撐子域,把心力投在核心。
💬 金句原文(Layer 0)
- 「模型與設計的核心互相塑造。」
- 「複雜性應對之道,在於一個好的領域模型。」
🔗 相關
- 與 工具-管理複雜度 同源(用邊界與模型馴服複雜度)
- 事件時序邊界可參 工具-Transactional-Outbox-Pattern