Domain Model 範例 - daniel-qa/Vue GitHub Wiki

範例主題:學生資料管理系統

我們先定義 Domain Model(不是 UI、不是 DB)

{
  "domain": "Student",
  "description": "學生基本資料",
  "fields": [
    {
      "name": "studentName",
      "label": "姓名",
      "type": "string",
      "required": true
    },
    {
      "name": "age",
      "label": "年齡",
      "type": "number",
      "min": 6,
      "max": 18
    },
    {
      "name": "grade",
      "label": "年級",
      "type": "enum",
      "options": ["一年級", "二年級", "三年級"]
    }
  ]
}

👉 這不是表單 👉 不是 API 規格 👉 是 業務語言模型


為什麼它是 Domain Model?

因為它符合 DDD 對 Domain Model 的三個核心定義:

1️⃣ 它描述的是業務概念,不是技術概念

"domain": "Student",

"description": "學生基本資料"

這是業務語言,不是 DB table,不是 API DTO。

2️⃣ 它使用業務語彙(Ubiquitous Language)

studentName

年齡

年級

這些是業務溝通語言,不是程式語言。

3️⃣ 它具有語意與約束

required

min

max

enum

這些是業務規則的一部分。