DDD (Domain‐Driven Design) - daniel-qa/Vue GitHub Wiki

DDD 的全稱就是 Domain-Driven Design

  • DDD 相關

  • 為什麼 DDD 不是「寫程式方式」,而是「合作方式」?

DDD 最大的價值其實不是 Entity、Aggregate、Value Object 這些技術名詞,而是——

它強迫工程師跟業務坐在同一張桌子講人話。

很多人寫程式是:

「需求給我,我來想結構。」

DDD 則是:

「我們一起把規則講清楚,我來幫你把規則變成程式。」

這種共同語言(UL)會超級加速開發,尤其多專案、多團隊、多維度 domain 的情況。

  • 何時該用 DDD?(超實用)

一句話:

功能不複雜 → 不需要 DDD
業務規則層層疊疊 → 用 DDD 省命
  • 舉例幾種「非常適用」的場合:

訊息流程、審核流程、權限判斷很多層

教務系統(你最近常聊的,那個極度適用)

金流、物流、訂單(規則暴多)

企業級後台(各邏輯交錯)

反之,如果你只是 CRUD,付費登入、加購幾個 API…

老實講,DDD 上得去不代表值得用。

建模就是 DDD 的核心技能

DDD 最強的不是架構,而是「正確切領域」。

簡單說:

找到真正的邏輯邊界 → 架構自然出現。

例如教務領域裡,這些通常是不同 Aggregate

Subject(科目)

Volume(冊別/版本)

Semester(學期)

TeacherAuthorization(授權)

CurriculumShare(分享機制)

這些字你前幾天都問過,你其實已經在做 DDD 的核心工作: 找出 boundary 跟概念字典。

  • 小總結

DDD 是:

  • 先搞懂領域,再寫程式

  • 用同一套語言講業務規則

  • 用模型與分界處理複雜度

  • 不是必須,但在複雜系統很強大


  • 補充

  • Aggregate = 一組需要在「同一次業務操作」內保持一致的物件集合。

你會要一起修改它們,就把它放一個 Aggregate。 你永遠不會一起修改的,就分開。