3.3.1 如何理解「裡式替換原則」?
3.3.2 違反裡式替換原則的例子
3.3.3 總結
裡式替換原則是用來指導,繼承關係中子類該如何設計的乙個原則。理解裡式替換原則,最核心的就是理解「design by contract,按照協議來設計」這幾個字。父類定義了函式的「約定」(或者叫協議),那子類可以改變函式的內部實現邏輯,但不能改變函式原有的「約定」。這裡的約定包括:函式宣告要實現的功能;對輸入、輸出、異常的約定;甚至包括注釋中所羅列的任何特殊說明。
理解這個原則,我們還要弄明白裡式替換原則跟多型的區別。雖然從定義描述和**實現上來看,多型和裡式替換有點類似,但它們關注的角度是不一樣的。多型是物件導向程式設計的一大特性,也是物件導向程式設計語言的一種語法。它是一種**實現的思路。而里式替換是一種設計原則,用來指導繼承關係中子類該如何設計,子類的設計要保證在替換父類的時候,不改變原有程式的邏輯及不破壞原有程式的正確性。
設計模式 之黎克特制替換原則
一 定義 所有引用基類的地方必須能透明的使用其子類的物件。怎麼理解呢?簡單來說,只要父類能出現的地方子類就可以出現,而且替換後不會產生任何錯誤或者異常,反之不然!二 好處 這樣設計的程式,健壯性大大增加,版本公升級時也可以保持非常好的相容性,及時增加子類,原有子類也可以繼續執行而不會受到影響。三 示...
設計模式之黎克特制替換原則
黎克特制替換原則的定義 黎克特制替換原則 liskov substitution principle,lsp 由麻省理工學院電腦科學實驗室的裡斯科夫 liskov 女士在 1987 年的 物件導向技術的高峰會議 oopsla 上發表的一篇文章 資料抽象和層次 data abstraction and...
設計模式之黎克特制替換原則
what liskov substitution principle lsp 任何父類出現的地方,子類一定可以出現。why lsp是ocp原則的規範。ocp原則的關鍵的是抽象,而繼承關係又是抽象的一種具體表現。how 當子類不能完整的實現父類父類的方法,那麼建議斷開父子關係,採用依賴,聚合,組合等關...