C 23種設計模式之裝飾者模式

2021-09-11 17:43:42 字數 986 閱讀 2667

以下內容全部來自傳智播客的設計模式講義:

概念

裝飾( decorator )模式又叫做包裝模式。通過一種對客戶端透明的方式來擴充套件物件的功能,是繼承關係的乙個替換方案。

裝飾模式就是把要新增的附加功能分別放在單獨的類中,並讓這個類包含它要裝飾的物件,當需要執行時,客戶端就可以有選擇地、按順序地使用裝飾功能包裝物件。

類圖角色和職責

適用於:

裝飾者模式

(decorator pattern動態的給乙個物件新增一些額外的職責。就增加功能來說,此模式比生成子類更為靈活。案例

#include using namespace std;

class car

;class runcar : public car

virtual void show()

protected:

private:

};class swimcardirector : public car

void swim()

virtual void show()

private:

car *m_p;

};class flycardirector : public car

void fly()

virtual void show()

private:

car *m_p;

};void main()

C 23種設計模式

目錄 前提 了解物件導向六大設計原則,有的說5大原則,說7大原則的都有,這些原則一般都包含 單一職責 黎克特制替換 依賴倒置 介面分離 組合復用原則 開閉原則 迪公尺特法則,理解一下,23種設計模式一般 是遵照這些原則具體的實現技巧。分類 建立型5種 工廠方法 抽象工廠 單例模式 構建者模式 原型模...

23種設計模式之裝飾者模式

今天我來向大家講解一下裝飾者模式,裝飾者模式的設計原則同樣也是對擴充套件開放,對修改關閉,那我們就有了乙個問題,如何做到對修改關閉,對擴充套件開放呢?我們都知道,裝飾者模式的定義是動態地將責任附加到物件中,其實裝飾者模式也可以說是動態巢狀的乙個過程。就比如舉例來說,假如我現在到乙個商店中買了一杯牛奶...

C 23種設計模式理解

有句話這樣說 程式設計中,沒有什麼問題是包一層不能解決的,如果有,就在包一層!六大原則 工廠方法模式 抽象工廠模式 單例模式 主要解決 乙個全域性使用的類頻繁地建立與銷毀,為保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點,實 現 私有化建構函式,對外提供乙個可控入口用於物件建立 入口可以是乙...