C 學習筆記草稿版16(基於多型的設計模式)

2021-08-15 17:44:55 字數 721 閱讀 6729

c++中有一種設計原則依賴倒置。也是給予多型的。

定義:高層模組不應該依賴低層模組,兩者都應該依賴其抽象。抽象不應該依賴細節。細節應該依賴抽象。

問題由來:類a直接依賴類b,如果要將類a改為依賴類c,則必須要通過修改類a的**來達成。這種場景下,類a一般是高層模組,負責複雜的業務邏輯;類b和類c是低層模組,負責基本的原子操作;假如修改類a,會給程式帶來不必要的風險。

解決方案:將類a修改為依賴介面i,類b和類c各自實現介面i,類a通過介面i間接與類b和類c發生聯絡,則會大大降低修改類a的機率。

依賴倒置原則基於這樣乙個事實:相對於細節的多變性,抽象的東西要穩定的多。以抽象為基礎搭建起來的架構比以細節為基礎搭建起來的架構要穩定的多。在c++中,抽象指的是抽象類(c++中稱為介面),細節就是具體的實現類,使用介面或者抽象類的目的是制定好規範和契約,而不去涉及任何具體的操作,把展現細節的任務交給他們的實現類取完成。

class cpu

;class mem

;class disk

;class intelcpu: public cpu

void work()

virtual ~computer()

private:

cpu* _pc;

mem* _pm;

wddisk* _pd;

};

C 學習筆記草稿版18(模板)

泛型 generic programming 即是指具有在多種資料型別上皆可操作的含義。泛型程式設計的代表作品stl是一種高效 泛型 可互動操作的軟體元件。泛型程式設計最初誕生於c 中,目的是為了實現c 的stl 標準模板庫 其語言支援機制就是模板 templates 模板的精神其實很簡單 引數化型...

C 學習筆記草稿版系列7(命名空間)

namespace 命名空間為了大型專案開發,而引入的一種避免命名衝突的一種機制。比如說,在乙個大型專案中,要用到多家軟體開發商提供的類庫。在事先沒有約定的情況下,兩套類庫可能存在同名的函式或是全域性變數而產生衝突。專案越大,用到的類庫越多,開發人員越多,這種衝突就越明顯。作用域運算子,前面命名空間...

C 學習筆記之多型 多型的學習 多型學習

c 學習筆記之多型 多型的學習 多型學習 多型分為兩類 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 動態多型...