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

2021-10-17 05:24:06 字數 829 閱讀 1925

只看概念比較抽象,先上例項。乙個違反黎克特制替換原則的例子、乙個遵守黎克特制替換原則的例子。

// 繪製圖形

void

drawshape

(shape shape)

else

if(shape.type == shape.square)

else

// 新增影象必需要修改drawshape方法,新增if判斷來支援新的圖形,違反了開閉原則

// 同樣是因為新增影象必需要修改drawshape方法,違反了黎克特制替換原則

}

// 在基類shape中定義乙個抽象方法

public

abstract shape

// 然後修改drawshape方法

void

drawshape

(shape shape)

// 這樣優化使drawshape既滿足開閉原則又滿足黎克特制替換原則。在使用基類的這個方法中可以用子類替換,程式正常執行(這就是黎克特制替換設計原則)

理解

在一塊業務邏輯需要依賴另外一塊業務邏輯的場景中,不直接依賴具體的實現,而是依賴其基類的介面方法或抽象方法,

but。。。。。在業務邏輯執行時可用子類替換基類,這種設計原則就叫做黎克特制替換原則

其實,黎克特制替換原則的原理就是利用了多型特性。通俗地說,介面或者抽象類的多個實現就是多型。通過多型可以實現面向介面進行程式設計,在程式執行時繫結具體的實現類,從而實現了類之間不需要直接耦合,就可以實現關聯。

黎克特制替換原則是一種類的繼承關係設計原則

一句話總結:子類必須可以替換掉基類,並且不影響使用基類使用方

設計原則 黎克特制替換原則

可以解讀為 派生類 子類 物件可以在程式中代替其基類 超類 物件。子類可以擴充套件父類的功能,但不能改變父類原有的功能。黎克特制替換原則對繼承進行了規則上的約束,這種約束主要體現在四個方面 子類可以實現父類的抽象方法,但不能重寫父類的非抽象方法。子類中可以增加自己特有的方法。當子類的方法過載父類的方...

設計原則之黎克特制替換原則(LSP)

lsp 黎克特制替換原則 兩種定義 型別t是型別s的子型別 所用引用基類的地方必須能透明的使用期子類物件 為什麼要使用黎克特制替換原則 讓繼承中的 利 大於 弊 發揮最大作用,同時減少 弊 所帶來的麻煩 繼承的優點是什麼?缺點?黎克特制替換要求凡是使用基類的地方,子類一定適用,因此子類必須具備基類的...

六 設計原則之黎克特制替換原則

今天的部落格主題 設計原則和模式 設計原則之黎克特制替換原則 黎克特制替換原則 lsp liskov substitution principle 任何基類可以出現的地方,子類一定可以出現。黎克特制替換原則是繼承復用的基石,只有當衍生類可以替換掉基類,基類的功能不收影響,基類才能真正被復用,衍生類也...