C++设计模式之装饰模式怎么实现
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本文小编为大家详细介绍"C++设计模式之装饰模式怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++设计模式之装饰模式怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
千家信息网最后更新 2025年02月23日C++设计模式之装饰模式怎么实现
本文小编为大家详细介绍"C++设计模式之装饰模式怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++设计模式之装饰模式怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
装饰模式是一种经典的类功能扩展模式,其精髓在装饰类使用继承加聚合的方式获得接口和要实现对象,然后通过自己实现扩展接口
作用
装饰模式通过装饰类动态地将责任附加到对象上,若要扩展功能,无需通过继承增加子类就能扩展对象的新功能,提供了比继承更有弹性的替代方案,避免了子类数量膨胀带来的系统臃肿。
代码实现
class Component{public: Component(){} virtual ~Component(){} virtual void operation() = 0;};class ConcreteComponentA : public Component{public: ConcreteComponentA(){} ~ConcreteComponentA(){} void operation() { fprintf(stderr, "ConcreteComponentA's operation!\n"); }};class ConcreteComponentB : public Component{public: ConcreteComponentB(){} ~ConcreteComponentB(){} void operation() { fprintf(stderr, "ConcreteComponentB's operation!\n"); }};class Decorator : public Component{public: Decorator() :mComponent(NULL){} virtual ~Decorator(){} virtual void operation() { if (mComponent) mComponent->operation(); } virtual void setComponent(Component* pComponent) { mComponent = pComponent; }protected: Component* mComponent;};class ConcreteDecoratorE : public Decorator{public: ConcreteDecoratorE (); virtual ~ConcreteDecoratorE (); virtual void addBehavior() { mComponent->operation(); fprintf(stderr, "ConcreteDecoratorE's addBehavior!\n"); }};class ConcreteDecoratorF : public Decorator{public: ConcreteDecoratorF (); virtual ~ConcreteDecoratorF (); virtual void addBehavior() { operation(); fprintf(stderr, "ConcreteDecoratorF's addBehavior!\n"); }};int main(){ ConcreteComponentB *pComponent = new ConcreteComponentB(); ConcreteDecoratorF decorator; decorator.setComponent(pComponent); decorator.addBehavior();}
读到这里,这篇"C++设计模式之装饰模式怎么实现"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
模式
设计模式
C++
设计
对象
文章
内容
功能
子类
接口
妥当
臃肿
代码
作用
动态
弹性
思路
数量
新功能
新知
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南服务器电源种类
第一届国家网络安全周宣传
智能门镜服务器没有信号
云服务器区域
北京商业软件开发收费
网络安全警示语五十字
如何通过我的世界服务器验证
数据库中如何修改字段名字
iis怎么装web服务器
计算机网络技术综合实训内容
为增强广大学生网络安全意识
e5 1650 服务器版
操作系统 数据库 三大
java喝网络安全哪个难
软件工程师数据库
数据库系统概论第五版复习笔记
神舟通用数据库协议格式
考研数据库查询是什么
塔式服务器怎么放到机柜里
郴州学计算机软件开发工资
百度144服务器试验阳性
中国移动网络安全报告
重邮数据库博士真题
手机网络安全检查自查知识要点
鲁班网服务器在哪里
网络安全警示语五十字
水牛岛软件开发
网络安全总监面试
普陀区常见网络技术特点
tcga数据库使用