🎯 什麼情境該想到我

當你要組出來的東西很複雜、要一步一步慢慢拼(很多可有可無的部件或設定),而你不想寫出一長串落落長、參數多到看不懂的建構子;或者你想用「同一套組裝流程」做出好幾種不同成品時。

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

  1. 意圖:把複雜物件的「建構過程」與「最終表示」分離,讓同樣的建構流程能產生不同表示。
  2. 主要參與者Builder(宣告各步驟 buildPartA/buildPartB 的介面)、ConcreteBuilder(實作各步驟、保存中間結果、提供 getResult)、Director(用固定順序指揮 Builder 完成組裝)、Product(最終成品)。
  3. 做法Director 呼叫 Builder 一步步 buildPartX,組裝順序集中在 Director;換一顆 ConcreteBuilder 就能用同一流程產出不同表示,最後由 Builder 的 getResult() 取回成品。
  4. 想改變成品長相 → 換 Builder;想改變組裝順序 → 改 Director。

🧪 我實際套用的紀錄

  • (待填)

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

  • 適合「建構步驟相對固定,但組態/表示變化多」的情況。
  • 物件很簡單、欄位沒幾個時,硬套 Builder 是過度設計,反而增加類別數量與樣板碼。
  • Builder 通常要為每種產品各寫一個 ConcreteBuilder,種類多時類別會變多。

🔗 相關工具