c 之裝飾模式

2021-10-08 12:47:41 字數 1138 閱讀 8798

裝飾模式屬於結構型模式,所謂裝飾,即修飾的意思。

定義:動態的給乙個物件新增一些額外的職責

優點:對於增加功能而言,裝飾模式比生產子類更加靈活。

何時使用:

在不改變原來的類和關係的情況下,動態地擴充套件這個類物件所具有的功能,當然也支援撤銷新增的功能。

優點:

裝飾模式與繼承的目的都是擴充套件物件的功能,但是裝飾模式卻可以提供比繼承更多靈活性。

通過使用不同的具體裝飾類以及這些裝飾類的排列組合,我們可以創造出很多不同表現的組合。

缺點:

比起繼承而言,**更複雜了。因為出現了很多裝飾類,導致**變得臃腫。

uml類圖:

應用場景:

我們使用一些形容詞來修飾滑鼠和鍵盤。

**(c++):

#include #include #include using namespace std;

class component

virtual void decorate() = 0;

};class concretecomponent :public component

};class decorator :public component

void setcomponent(component *c)

void decorate()

protected:

component* m_component;

};class concretedecoratora :public decorator

};class concretedecoratorb :public decorator

};//客戶端

int main()

輸出:

C 之裝飾模式

裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。裝飾者模式適用場景 1 以動態的方式給物...

c 設計模式之裝飾模式

裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該盡量使用物件組合,而不是物件繼承來擴充套件和復用...

C 設計模式之裝飾模式

動態地給乙個物件增加一些額外的職責,就增加物件的功能來說,裝飾模式比生成子類更為靈活。裝飾模式是一種物件結構模式。我們常常通過繼承的方式來對乙個既有的類進行功能新增,但繼承方式有顯著的侷限性,因為 例如在視窗控制項當中,要增加新的功能如增加滾動條,增加背景,通過繼承的方式來增加新的功能,有下面的解決...