🎯 什麼情境該想到我

當你在猶豫「用繼承還是組合來重用行為」,或繼承層級越來越深、改父類就牽連一堆子類時。

⚙️ 怎麼用

  1. 重用行為時,先想「有一個」(組合)而非「是一個」(繼承):把行為委派給組合進來的物件。
  2. 繼承是編譯期綁死的白箱,組合是執行期可換的黑箱——組合更有彈性。
  3. 用繼承前先確認是真正的 is-a 關係,且父類穩定。
  4. 需要在執行期切換行為(如 Strategy 模式)→ 幾乎都用組合。

🧪 我實際套用的紀錄

  • 2026-07-14:(待填)

⚠️ 注意

  • 不是「禁用繼承」;穩定的 is-a、需要多型時繼承仍恰當。

🔗 相關工具

  • 工具-針對介面編程 —— 組合的前置條件:被組合進來的東西要是介面,換實作才不會又改一輪
  • 工具-封裝變化點 —— 為什麼組合會贏:把會變的部分抽成可替換的物件,正是組合的本質
  • 工具-開閉原則 —— 目的地:組合+介面是達成「加新功能不改舊程式」最常走的路徑