🎯 什麼情境該想到我

當你看到「依物件的型別(type code)做 switch / if-else 分支」,而且同樣一組分支在程式各處反覆出現、每加一種新類型就得回頭改好幾個地方的時候。

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

意圖:把「依型別分支的條件邏輯」交給類別繼承與多型來處理。為每一種類型建立子類別,讓各子類別覆寫自己的行為;呼叫端只管呼叫方法,由多型自動分派到正確的實作。加新類型時只要新增一個子類別,不必去動既有的 switch。

小步安全進行:

  1. 建立繼承體系:若還沒有子類別,先做以子類取代型別碼(或用工廠函式建立適當子類)。
  2. 挑一個含 switch 的函式,用函式上移把它搬到超類別。
  3. 在某個子類別中覆寫該函式,把「屬於這個類型的那條分支」搬進來取代 super 的行為。
  4. 逐一為其他子類別重複,每搬一條分支就執行測試。
  5. 所有分支都被子類別覆寫後,把超類別的方法改成預設行為或宣告為抽象。

🧪 我實際套用的紀錄

  • (待填)

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

  • 只有一兩處簡單分支、且類型很少變動時,直接用條件式更簡單,不必大動干戈引入繼承。
  • 這是較重的手法,會引入類別階層;要確定「依型別變化的行為」確實會反覆出現、值得這個結構。

🔗 相關工具