第一節 開閉原則和黎克特制替換原則

2022-02-19 14:05:07 字數 2724 閱讀 5339

一. 開閉原則

1. 定義

對擴充套件開放,對修改關閉。(當應用的需求改變時,在不修改軟體實體的源**前提下,可以擴充套件模組的功能,使其滿足新的需求。)

2. 作用

(1). 對軟體測試的影響

軟體遵守開閉原則的話,軟體測試時只需要對擴充套件的**進行測試就可以了,因為原有的測試**仍然能夠正常執行。

(2). 可以提高**的可復用性

粒度越小,被復用的可能性就越大;在物件導向的程式設計中,根據原子和抽象程式設計可以提高**的可復用性。

(3). 可以提高軟體的可維護性

遵守開閉原則的軟體,其穩定性高和延續性強,從而易於擴充套件和維護

3. 實現方法和案例

可以通過「抽象約束、封裝變化」來實現開閉原則,即通過介面或者抽象類為軟體實體定義乙個相對穩定的抽象層,而將相同的可變因素封裝在相同的具體實現類中。

因為抽象靈活性好,適應性廣,只要抽象的合理,可以基本保持軟體架構的穩定。而軟體中易變的細節可以從抽象派生來的實現類來進行擴充套件,當軟體需要發生變化時,只需要根據需求重新派生乙個實現類來擴充套件就可以了。

ps: 依賴倒置原則就是對開閉原則很好的實現。

類似的案例太多了,此處不單獨提供了。

二. 黎克特制替換原則

1. 定義

子類可以擴充套件父類的功能,但不要改變父類原有的功能。也就是說:子類繼承父類時,除新增新的方法完成新增功能外,不要重寫父類已經實現了的方法(抽象方法除外)。

2. 作用

(1). 黎克特制替換原則是實現開閉原則的重要方式之一。

(2). 它避免了繼承中重寫父類造成的可復用性變差的缺點。

(3). 它是動作正確性的保證。即類的擴充套件不會給已有的系統引入新的錯誤,降低了**出錯的可能性。

3. 實現方法和案例

父類和子類

///

///計算父類

/// public

class

fathercalculate

//////

計算兩個數相加

/// ///

//////

public

double cal2(double a, double

b)

//////

計算兩個數相加

/// ///

//////

public

virtual

int cal3(int a, int

b)

//////

計算兩個數相乘

/// ///

//////

public

int cal4(int a, int

b)

}public

class

childcalculate2 : fathercalculate

}

view code

測試

");    //

4

//2.執行加法運算

fathercalculate f1 = new

childcalculate1();

//走的是父類的方法

console.writeline($"

10+6=

"); //

16

//3. 執行加法運算

fathercalculate f2 = new

childcalculate2();

//走的是父類的方法 (滿足 黎克特制替換原則)

console.writeline($"

10+6=

"); //

16

//4. 執行加法運算

childcalculate2 c2 = new

childcalculate2();

//走的是父類的方法,子類繼承父類的

console.writeline($"

10+6=

"); //

16

//5. 執行減法運算

//走的是子類的方法

console.writeline($"

10-6=

"); //

4 }

執行結果

補充說明:如果通過重寫父類的方法來完成新的功能,這樣寫起來雖然簡單,但是整個繼承體系的可復用性會比較差,特別是運用多型比較頻繁時,程式執行出錯的概率會非常大。

如果程式違背了黎克特制替換原則,則繼承類的物件在基類出現的地方會出現執行錯誤。這時其修正方法是:取消原來的繼承關係,重新設計它們之間的關係。

!

開閉原則與黎克特制替換原則

1.開閉原則 是物件導向設計的基本原則之一,是 可復用設計 的基礎,它的主要原則是 對擴充套件開放,對修改關閉 意思就是我們改變乙個軟體時。應該通過擴充套件方式來改變軟體,而不是修改原有的 2.黎克特制替換原則 黎克特制替換原則是說,任何基類可以出現的地方,子類一定可以出現 只有當衍生類可以替換基類...

第一節綜述

shader是什麼?shader是著色器。渲染流水線的概念?渲染流水線的工作任務在於由乙個三維場景出發,生成一張二維影象。渲染流程分為3個階段 應用階段 幾何階段 光柵化階段。1 應用階段 由cpu負責實現,由開發者主導。最重要的輸出是渲染所需的幾何資訊,即渲染圖元。這些渲染圖元傳遞給幾何階段。2 ...

第一節 熱機

一.熱機 內燃機是熱機的一種,以汽油或柴油為燃料 二.汽油機 練1.三.柴油機 練2.從能量轉化的角度看,一台四衝程內燃機在乙個迴圈中 1 哪個衝程存在著化學能轉化為內能的過程?2 哪個衝程存在著內能轉化為機械能的過程?3 哪個衝程具有很明顯的機械能轉化為內能的過程?練3.關於單缸四衝程內燃機,下列...