C++设计模式之装饰模式怎么实现

C++设计模式之装饰模式怎么实现

本文小编为大家详细介绍“C++设计模式之装饰模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++设计模式之装饰模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

装饰模式是一种经典的类功能扩展模式,其精髓在装饰类使用继承加聚合的方式获得接口和要实现对象,然后通过自己实现扩展接口

C++设计模式之装饰模式怎么实现

作用
装饰模式通过装饰类动态地将责任附加到对象上,若要扩展功能,无需通过继承增加子类就能扩展对象的新功能,提供了比继承更有弹性的替代方案,避免了子类数量膨胀带来的系统臃肿。

代码实现

classComponent{public:Component(){}virtual~Component(){}virtualvoidoperation()=0;};classConcreteComponentA:publicComponent{public:ConcreteComponentA(){}~ConcreteComponentA(){}voidoperation(){fprintf(stderr,"ConcreteComponentA'soperation!\n");}};classConcreteComponentB:publicComponent{public:ConcreteComponentB(){}~ConcreteComponentB(){}voidoperation(){fprintf(stderr,"ConcreteComponentB'soperation!\n");}};classDecorator:publicComponent{public:Decorator():mComponent(NULL){}virtual~Decorator(){}virtualvoidoperation(){if(mComponent)mComponent->operation();}virtualvoidsetComponent(Component*pComponent){mComponent=pComponent;}protected:Component*mComponent;};classConcreteDecoratorE:publicDecorator{public:ConcreteDecoratorE();virtual~ConcreteDecoratorE();virtualvoidaddBehavior(){mComponent->operation();fprintf(stderr,"ConcreteDecoratorE'saddBehavior!\n");}};classConcreteDecoratorF:publicDecorator{public:ConcreteDecoratorF();virtual~ConcreteDecoratorF();virtualvoidaddBehavior(){operation();fprintf(stderr,"ConcreteDecoratorF'saddBehavior!\n");}};intmain(){ConcreteComponentB*pComponent=newConcreteComponentB();ConcreteDecoratorFdecorator;decorator.setComponent(pComponent);decorator.addBehavior();}

读到这里,这篇“C++设计模式之装饰模式怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道。

发布于 2022-04-15 22:33:44
收藏
分享
海报
0 条评论
26
上一篇:C++的缓冲区怎么使用 下一篇:C++设计模式之代理模式如何实现
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码