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