🎯 什麼情境該想到我

當你發現「兩個(或多個)類別有相似的欄位與行為」的時候——它們各自維護著幾乎一樣的資料與方法,彼此其實共享著某種共同概念。

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

意圖:抽出一個共同的超類別,把這些類別重複的欄位與行為上移到父類別集中管理,讓子類別只保留各自的差異。這是「消除重複」在類別層級的做法。

小步安全進行:

  1. 建立一個空的超類別,讓原本那幾個類別繼承它。
  2. 執行測試。
  3. 用欄位上移、函式上移、建構式本體上移,把共通的欄位、方法、建構邏輯逐一搬進超類別。
  4. 每搬一項就執行一次測試。
  5. 檢視子類別剩下的部分,若還有可協調的差異(如方法名不同但意圖相同),統一後再繼續上移。
  6. 檢查使用端,看能否改為面向新超類別的型別編程。

🧪 我實際套用的紀錄

  • (待填)

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

  • 若這些類別的相似只是「表面巧合」、概念上並非同類,硬抽超類會製造出牽強的繼承關係;此時改用提煉類別+委派(組合)較恰當。
  • 相較之下,「先有共同父類再分化子類」與本手法方向相反,視情境擇一。

🔗 相關工具