首頁技術文章正文

Java培訓:開閉原則和里氏代換原則

更新時間:2022-07-13 來源:黑馬程序員 瀏覽量:

IT培訓班

開閉原則是面向對象世界里最基礎的設計原則,它指導我們如何建立一個穩(wěn)定,靈活,可擴展的系統(tǒng)。開閉原則定義如下:

Software entities like classes,modules and functions should be open for extension but closed for modifications.

一個軟件實體(如類,模塊和函數)應該對擴展開放,對修改關閉。

開閉原則明確的告訴我們:軟件實現應該對擴展開放,對修改關閉,其含義是說一個軟件應該通過擴展來實現變化,而不是通過修改已有的代碼來實現變化的。

一個軟件產品只要在生命周期內,都會發(fā)生變化,即然變化是一個事實,我們就應該在設計時盡量適應這些變化,以提高項目的穩(wěn)定性和靈活性,真正實現“擁抱變化”。開閉原則告訴我們應盡量通過擴展軟件實體的行為來實現變化,而不是通過修改現有代碼來完成變化,它是為軟件實體的未來事件而制定的對現行開發(fā)設計進行約束的一個原則。


里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關系就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規(guī)范。

簡單的理解為一個軟件實體如果使用的是一個父類,那么一定適用于其子類,而且它察覺不出父類對象和子類對象的區(qū)別。也就是說,軟件里面,把父類都替換成它的子類,程序的行為沒有變化。

但是反過來的代換卻不成立,里氏代換原則(Liskov Substitution Principle):一個軟件實體如果使用的是一個子類的話,那么它不能適用于其父類。

分享到:
在線咨詢 我要報名
和我們在線交談!