设计模式之装饰者模式 及 c++实现
2012-12-15 12:00
288 查看
动机: 为某个经常变化的对象动态的添加职责,通过组合的方式而不是继承的方式。因为通过继承的方式会增加类的继承层次,增加了软件的复杂度。
装饰者模式类图如下所示。 该模式的巧妙之处在于, Decorator类与要修饰的类的基类是继承和组合的关系。对于Component类的所有派生类都可以用一个Decorator类进行修饰。
c++ 实现代码如下:
class CComponent
{
public:
CComponent();
virtual ~CComponent();
virtual void Operation()=0;
};
class CConcreteCompomentA : public CComponent
{
public:
virtual void Operation(){printf("CConcreteCompomentA Operation..");};
protected:
private:
};
class CDecorator: public CComponent
{
public:
virtual void Operation(){printf("CDecorator operation \n");};
protected:
CComponent* m_pComponent;
};
class CConcreteDecorator : public CDecorator
{
public:
CConcreteDecorator(CComponent* pCom){m_pComponent=pCom;};
virtual void Operation(){printf("CConcreteDecorator operation \n");AddBehavior();};
void AddBehavior(){printf("CConcreteDecorator AddBehavior \n");};
};
int main(int argc, char* argv[])
{
CComponent* pCom=new CConcreteCompomentA();
CDecorator* pDecorator=new CConcreteDecorator(pCom);
pDecorator->Operation();
getchar();
return 0;
}
装饰者模式类图如下所示。 该模式的巧妙之处在于, Decorator类与要修饰的类的基类是继承和组合的关系。对于Component类的所有派生类都可以用一个Decorator类进行修饰。
c++ 实现代码如下:
class CComponent
{
public:
CComponent();
virtual ~CComponent();
virtual void Operation()=0;
};
class CConcreteCompomentA : public CComponent
{
public:
virtual void Operation(){printf("CConcreteCompomentA Operation..");};
protected:
private:
};
class CDecorator: public CComponent
{
public:
virtual void Operation(){printf("CDecorator operation \n");};
protected:
CComponent* m_pComponent;
};
class CConcreteDecorator : public CDecorator
{
public:
CConcreteDecorator(CComponent* pCom){m_pComponent=pCom;};
virtual void Operation(){printf("CConcreteDecorator operation \n");AddBehavior();};
void AddBehavior(){printf("CConcreteDecorator AddBehavior \n");};
};
int main(int argc, char* argv[])
{
CComponent* pCom=new CConcreteCompomentA();
CDecorator* pDecorator=new CConcreteDecorator(pCom);
pDecorator->Operation();
getchar();
return 0;
}
相关文章推荐
- Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现
- 设计模式之装饰者模式C++实现
- 设计模式-装饰者模式 C++实现
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 设计模式之装饰者模式(c++实现)
- 设计模式之C++实现(三)---装饰者模式(Decorator)
- 最常用的设计模式---装饰者模式(C++实现)
- 《Head First-设计模式》--装饰者模式C++实现
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 设计模式C++实现——装饰者模式
- 简单了解设计模式中的装饰者模式及C++版代码实现
- 设计模式--策略模式(C++实现)
- 设计模式---中介者模式(C++实现)
- 【设计模式】Singleton模式C++实现
- 设计模式C++实现(3)——适配器模式
- C++ 设计模式 —— 控制器设计模式(实现功能模块间通信)
- 我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
- 详解C++设计模式编程中策略模式的优缺点及实现