本文小编为大家详细介绍“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++设计模式之装饰模式怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道。
C++之list容器模拟怎么实现
C++深浅拷贝及简易string类怎么实现
C++之list容器如何使用
C++内存对齐如何实现
C++内存对齐如何实现本篇内容介绍了“C++内存对齐如何实现”的有...
C/C++如何获取CAN信号
C/C++程序链接与反汇编工具objdump如何使用
C++聚合体初始化的方法是什么
C++聚合体初始化的方法是什么本篇内容介绍了“C++聚合体初始化的...
C++引用如何使用
C++类和对象之封装及class与struct的区别是什么
C++怎么实现softmax函数
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议