c 設計模式之裝飾者模式

2021-06-06 01:30:33 字數 985 閱讀 9735

#include

//公共介面

class component

;//需要被裝飾的物件

class concretecomponent :public component

void operation()

};//裝飾a類

class concretedecoratora : public decorator

;//裝飾b類

class concretedecoratorb : public decorator

{public:

//裝飾b類特有的裝飾方法

void operation()

{//首先呼叫被裝飾者原來特有的操作

decorator::operation();

cout<

void funcb()

{cout<

void main(void)

{//例項化乙個需要被裝飾的物件

concretecomponent *c = new concretecomponent();

//a種裝飾

concretedecoratora *a = new concretedecoratora();

//b種裝飾

concretedecoratorb *b = new concretedecoratorb();

//為被裝飾者c增加a種裝飾

a->setcomponent(c);

a->operation();//此時c具有了a功能

cout/為c再增加b種裝飾

b->setcomponent(a);

//c經過兩種裝飾後得到最終的b,這有就意味著現在的operation()函式同時具備a,b,c三者個operation的功能

c 設計模式之裝飾者模式

include 公共介面 class component 需要被裝飾的物件 class concretecomponent public component void operation 裝飾a類 class concretedecoratora public decorator 裝飾b類 clas...

c 設計模式之裝飾者模式

裝飾者模式動態地將責任附加到物件上,如果要擴充套件功能,裝飾者模式提供了比繼承更有彈性的替代方案.裝飾者模式有一群裝飾者類,這些類包裝具體的類元件 class component 公共抽象類 class concretecomponent public component 具體的類 class de...

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...