本章主軸#

工廠這一部結尾總結。把建立、使用、管理三件事拆乾淨,就能在不破壞既有結構的前提下擴充軟體。

三件事,三個視角#

任務主要工具
識別物件(依職責)共通與差異分析(CVA)
決定物件之間怎麼互動多數設計模式
決定物件如何被建立與管理工廠

第三件事——管理——是新加入的視角。把它從「使用」中分離,能讓最複雜的部分維持在概念層次,遵守 OCP、依賴倒置與 Liskov 替換。

為什麼把「使用」與「管理」徹底分開?#

  • 使用方專注於概念與抽象,不需知道具體類別
  • 工廠承擔「哪個情境用哪個物件」「需要幾個」「如何回收」「如何錯誤處理」
  • 兩者修改路徑互不干擾——維護成本顯著下降

把工廠想成「物件管理員(object managers)」更貼切——建立只是它眾多職責之一。

兩段式重構手法#

加新功能時:

  1. 先重構(不加新功能),在受影響區建立可插拔的「位置」
  2. 把新功能塞進去——只動工廠與新類別

這就是 OCP 在實務中的落地步驟。工廠模式提供了「可插拔位置」最自然的容身之所。

規模隨設計成長#

  • 初期:直接在類別本身用 static method 即可
  • 中期:把規則寫死在獨立的工廠物件
  • 後期:規則太多時改用設定檔、資料庫、動態類別載入

不論演化到哪一階段,工廠都讓「規則邏輯」與「使用邏輯」維持鬆耦合。

一句話總結整本書的核心心法#

任意兩個實體 A 與 B:A 使用 B、或 A 建立/管理 B,但不能同時兩者。

本章重點#

  • 設計分三個視角:找物件、定關係、管實例
  • 工廠是「管」這件事的家
  • 重構手法兩段式:先開出位置,再放進去
  • 工廠規模可隨需求漸進演化,使用方代碼幾乎不必動