设计模式之三、装饰模式Decorator适合范围:动态地给一个对象添加一些额外的职责。书中的实例:以人为对象,对其做的各种装饰性的行为,如穿衣;裤子;鞋子;等等行为。装饰模式的结构图如下: C++实现的关键代码如下:1、抽象类:CComponentCComponent.h//纯虚函数virtual void Operation() = 0;2、具体对象类:CConcreteComponent.cppvoid CConcreteComponent::Operation(){}3、装饰父类:CDecorator.cppvoid CDecorator::Operation(){ if(m_com != NULL) { m_com->Operation(); } }void CDecorator::SetDecorator(CComponent *com){ m_com = com;}CDecorator.hprotected:CComponent *m_com;4、子类:实现装饰行为 CDecoratorA.cppvoid CDecoratorA::Operation(){ m_com->Operation(); //实现子类自己的行为 OperationA();}void CDecoratorA::OperationA(){ cout<<"穿上衣服"< }5、子类:实现装饰行为 CDecoratorB.cppvoid CDecoratorB::Operation(){ m_com->Operation(); //实现子类自己的行为 OperationB();}void CDecorator::OperationB(){ cout<<"穿上裙子"< }...6、客户端代码 main.cppCConcreteComponent *con = new CConcreteComponent();CDecoratorA *ca = new CDecoratorA();CDecoratorB *cb = new CDecoratorB();ca->SetDecorator(con);cb->SetDecorator(ca);cb->Operation();
//释放内存
if(con != NULL)
{
delete con;
}
if(ca != NULL)
{
delete ca;
}
if(cb != NULL)
{
delete cb;
}