設計模式學習筆記,參考了李忠宇老師的視訊,其它參考資料在文中以連結形式給出。
分類
建立型(Creational)、結構型(Structural)、行為型(Behavioral)
要點
- 好的面向對象設計——應對變化、提高複用
- 在變化點處應用設計模式
-
重構關鍵技法 靜态-->動态
早綁定-->晚綁定
繼承-->組合
編譯時依賴-->運作時依賴
緊耦合-->松耦合
- 設計模式應用的前提是至少要有一個穩定點,也至少要有一個變化點。設計模式最大的作用就是在穩定和變化中尋找隔離點,然後分離它們,進而來管理變化。
裡氏替換原則
裡氏替換原則(Liskov Substitution Principle,LSP)的含義是:要保證子類能“無害地”替換基類。
類B派生自類A,現在,把程式中所有A類執行個體都換成B類執行個體,同時使得所有A類指針都指向B類執行個體,若此時程式仍然能夠運作且不發生邏輯錯誤(如不會由做加法變成做減法),則稱B對A的擴充滿足裡氏替換原則。
裡氏替換原則不僅是對子類的限制,也是對父類的限制。那就是:父類盡量不要改動,即使不得已要改動,也要保證能相容所有子類(即可以被任何子類所代替)。例如,父類A(如超級英雄類)中方法foo用來計算角色武力值,子類B(如蝙蝠俠類)用來計算蝙蝠俠的武力值。現在,把父類A的foo方法改為計算角色的生命值。此時,子類B不能代替父類A,因為B.foo用來計算武力值,不能用來計算生命值(即此時A.foo的功能)。
參考[1][2]。
參考
[1] 裡氏替換原則LSP|極客教程
[2] 裡氏替換原則——面向對象設計原則