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

2022-02-14 05:11:25 字數 909 閱讀 2205

黎克特制替換原則:所有引用基類的地方,必須能透明的使用其子類的物件。

通俗的理解:子類可以擴充套件父類的功能,但不能改變父類原有的功能。

**示例:

1

//電腦

2public

abstract

class

computer36

7///

8///

膝上型電腦

9///

10class

laptopcommputer : computer

1116}17

18///

19///

台式電腦

20///

21class

desktopcomputer : computer

2227}28

class

program

2941 }

黎克特制替換原則表明,在軟體中將乙個基類物件替換成它的子類物件,程式將不會產生任何錯誤和異常,反過來則不成立,如果乙個軟體實體使用的是乙個子類物件的話,那麼它不一定能過使用基類物件。

例如:我喜歡動物,那我一定喜歡狗,以為狗是動物的子類,但是我喜歡狗,不能推斷我喜歡任何動物,包括貓,老鼠,雖然它們也是動物。

黎克特制替換原則是實現開閉原則的重要方式之一,由於使用基類物件的地方都可以使用子類物件,因此在程式中盡量使用基類型別來對物件進行定義,而在執行時再確定其子類型別,用子類物件來替換父類物件

在執行黎克特制替換原則時,應該將父類設計為抽象類或者介面,讓子類繼承父類或實現父類,並實現在父類中宣告的方法,執行時,子類例項替換父類例項,可以很方便地擴充套件系統的功能,無須修改原有子類的**,增加新的功能可以通過增加乙個新的子類來實現。

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

如果對每個型別為t1 的物件 o1,都有型別為t2的物件o2,使得以t1定義的所以程式p中所有的物件o1都代換為o2時,程式p的行為不發生變化,那麼型別t2是型別t1的子型別。換句話說 所有引用基類的地方必須能透明地使用其子類的物件 使用繼承是遵循黎克特制替換原則意味著 在子類中盡量不要重寫父類方法...

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

任何能使用父類物件的地方,都應該能透明的替換為子類物件 也就說,子類物件可以隨時隨地替換父類物件,且替換完以後,語法不會報錯,業務邏輯也不會出現問題 反例 正方形不是長方形 1.提高 餓的重用性 2.多型的前提 主要看有沒有 is a 關係a.主要看有沒有 is a 關係 b.在兩個類有了is a關...

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

ioo中的繼承性的思考和說明 繼承包含這樣一層含義 父類中凡是已經實現好的方法,實際上是在設定規範和契約,雖然它不強制要求所有的子類必須遵循這些契約,但是如果子類對這些已經實現的方法任意修改,就會對整個繼承體系造成破壞。繼承在給程式設計帶來便利的同時,也帶來了弊端。比如使用繼承會給程式帶來侵入性,程...