🎯 什麼情境該想到我
當建立一個物件或聚合要組裝很多零件、套很多規則,複雜到塞進建構子會讓呼叫端知道太多內部細節時——就把這段建立邏輯抽出來交給工廠。
⚙️ 怎麼用(步驟 / 公式)
意圖:封裝複雜物件/聚合的建立邏輯,確保一建立出來就處於一致且完整的狀態。
- 把複雜的組裝、預設值、關聯建立集中到工廠(方法、獨立類別或聚合根上的建立方法)。
- 讓工廠在回傳前就滿足所有不變式——不允許產出半成品或不一致的物件。
- 呼叫端只給必要的原料,不需了解內部如何拼裝。
- 建立整個聚合時,工廠負責一次產出根與其內部物件的一致整體。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 建立很單純時不需要工廠,直接用建構子即可,別過度設計。
- 工廠負責「建立新物件」,儲存庫(DDD)負責「取回既有物件」,兩者職責不要混。
- 若建立規則本身是重要領域概念,考慮讓它顯性成為領域的一部分。