設計模式無限重讀之黎克特制替換原則(LSP)

2021-07-27 18:37:50 字數 639 閱讀 3816

黎克特制替換原則(liskov substitution principel)是解決繼承帶來的問題。

繼承的優點:

繼承的缺點:

定義:所有引用基類的地方必須能透明地使用其子類的物件。

通俗點講,只要父類能出現的地方子類就可以出現,而且替換為子類也不會產生任何錯誤或異常,使用者可能根本就不需要知道是父類還是子類。但是,反過來就不行了,有子類出現的地方,父類未必就能適應。

含義:

在類中呼叫其他類時務必要使用父類或介面,如果不能使用父類或介面,則說明類的設計已經違背了黎克特制替換原則。

如果子類不能完整地實現父類的方法,或者父類的某些方法在子類中發生了「畸變」,則建議斷開父子繼承關係,採用依賴、聚集、組合等關係代替繼承。

如果子類的前置條件較小,子類在沒有覆寫父類的方法的前提下,子類方法被執行了,這會引起業務邏輯混亂,因為在實際應用中父類一般都是抽象類,子類是實現類,你傳遞乙個這樣的實現類就會「歪曲」了父類的意圖,引起一堆意想不到的業務邏輯混亂。

目的:採用黎克特制替換原則的目的就是增強程式的健壯性,版本公升級是也可以保持非常好的相容性。即使增加子類,原有的子類還可以繼續執行。在實際專案中,每個子類對應不同的業務含義,使用父類作為引數,傳遞不同的子類完成不同的業務邏輯。

出處:

設計模式 之黎克特制替換原則

一 定義 所有引用基類的地方必須能透明的使用其子類的物件。怎麼理解呢?簡單來說,只要父類能出現的地方子類就可以出現,而且替換後不會產生任何錯誤或者異常,反之不然!二 好處 這樣設計的程式,健壯性大大增加,版本公升級時也可以保持非常好的相容性,及時增加子類,原有子類也可以繼續執行而不會受到影響。三 示...

設計模式之黎克特制替換原則

黎克特制替換原則的定義 黎克特制替換原則 liskov substitution principle,lsp 由麻省理工學院電腦科學實驗室的裡斯科夫 liskov 女士在 1987 年的 物件導向技術的高峰會議 oopsla 上發表的一篇文章 資料抽象和層次 data abstraction and...

設計模式之黎克特制替換原則

what liskov substitution principle lsp 任何父類出現的地方,子類一定可以出現。why lsp是ocp原則的規範。ocp原則的關鍵的是抽象,而繼承關係又是抽象的一種具體表現。how 當子類不能完整的實現父類父類的方法,那麼建議斷開父子關係,採用依賴,聚合,組合等關...