面向對象設計模式原則04 里氏替換原則(LSP)

里氏替換原則(Liskov Substitution Principle,LSP)是指:繼承必須確保超類所擁有的性質在子類中仍然成立。設計模式

通俗來說就是:子類能夠擴展父類的功能,但不能改變父類原有的功能。也就是說:子類繼承父類時,除添加新的方法完成新增功能外,儘可能不要重寫父類的方法。設計

當須要重寫父類方法的時候,能夠將子類"提高",兩個類共同繼承更高層的抽象類或接口。兩個類的關係由擴輾轉爲關聯。下面舉例來講明。對象

Swallow(燕子)是會飛的鳥,而BrownKiwi(幾維鳥)是不會飛的鳥。blog

假如重寫BrownKiwi類的setFlySpeed()方法,將飛行速度speed設置爲0,那再調用BrownKiwi對象的getFlyTIme則會獲得"除0異常"。繼承

想要避免此類問題有不少方法,里氏替換原則提供了一種解決方案,就是將BrownKiwi提高,並讓Swallow和BrownKiwi同時繼承更高層的一個類。以下圖:接口

這個例子可能不夠典型,缺乏一些說服力。我以爲設計模式的原則,只是一種方向性的建議,在實際開發活動中,仍是要因地制宜,根據實際狀況來進行合理的設計。ip

相關文章
相關標籤/搜索