设计模式之(三、装饰模式Decorator)

    技术2022-05-19  21

    设计模式之三、装饰模式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;

    }


    最新回复(0)