重構 - 改善既有程式的設計 - Refused Bequest
April 12, 2020這篇文章討論《重構 - 改善既有程式的設計》裡的3.21 - Refused Bequest
圖片以及程式碼來源自重構 - 改善既有程式的設計
被拒絕的遺贈
指的是程式碼過度利用繼承
只因為想要reuse code而繼承自錯誤的superclass 導致subclass有些繼承自superclass的方法是完全用不到的
起因
過度的濫用繼承 我們應該遵循Liskov姊的原則 只在正確的時候使用繼承
解法
Replace Inheritance with Delegation
一樣 講過不少次了
Extract Superclass
如果你還是覺得應該用繼承 那你就要仔細把subClass不需要的函式跟變數丟回給SuperClass
讓subClass就只擁有它自己需要的函式以及變數