🎯 什麼情境該想到我

當你發現「好幾個子類別各自有一份內容相同(或幾乎相同)的方法」的時候——改動一處就得記得同步其他每一份,重複散落在繼承體系裡。

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

意圖:把各子類別重複的方法上移到共同父類別,消除重複。以後只需維護一份,邏輯也集中在一處。相關的還有「欄位上移」與「建構式本體上移」,一併把共通的資料與初始化搬上去。

小步安全進行:

  1. 檢查各子類別中這些方法是否真的完全等價;若只是相似,先重構到彼此一致(統一參數、統一其引用的欄位名)。
  2. 若方法引用了子類別才有的欄位或方法,先把那些欄位/方法一併上移,或在父類別宣告為抽象。
  3. 把其中一份方法搬進父類別。
  4. 執行測試。
  5. 逐一刪除其他子類別中重複的那份方法,每刪一個就測一次。

🧪 我實際套用的紀錄

  • (待填)

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

  • 若各子類別的方法只是「看起來像」但語意其實不同,上移會強行綁死本該獨立演化的邏輯——不要為了消重複而合併不同概念。
  • 方法依賴大量子類別專屬狀態時,上移前得先處理那些依賴,成本可能不划算。

🔗 相關工具