博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习设计模式(5)——装饰器模式
阅读量:4068 次
发布时间:2019-05-25

本文共 950 字,大约阅读时间需要 3 分钟。

装饰器模式,挺难学的,感觉技巧上复杂一点,有那么一丝递归的意思在里面。

第一次看代码,看的云里雾里,在我单步调试之后,终于明白了装饰器模式的关键写法——调用父类(含参)构造函数,再直接调用父类的函数去执行。

这样就可以依次把要装饰的东西,全都装上去。

表面上和建造者模式非常相似,仔细想想,建造者模式更简单明了。但是,我想装饰器模式有他存在的必要,因为建造者模式是组装成一个东西,而装饰器模式是往上加东西,是两种不同的设计思路。

代码如下:

#include 
using namespace std;class Phone{public: Phone() {} virtual ~Phone() {} virtual void ShowDecorate() {}};//具体的手机类class iPhone : public Phone{private: string m_name; //手机名称public: iPhone(string name): m_name(name){} ~iPhone() {} void ShowDecorate() { cout<
<< "'s deco" <
ShowDecorate(); }};//具体的装饰类class DecoratorPhoneA : public DecoratorPhone{public: DecoratorPhoneA(Phone *phone) : DecoratorPhone(phone) {} void ShowDecorate() { DecoratorPhone::ShowDecorate(); AddDecorate(); }private: void AddDecorate() { cout<<"add guajian"<
ShowDecorate(); delete dpa; delete dpb; delete iphone; return 0;}//

转载地址:http://ezoji.baihongyu.com/

你可能感兴趣的文章
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java-IO-File类
查看>>
Java-IO-java的IO流
查看>>
Java-IO-输入/输出流体系
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
Java大数据:全文搜索引擎Elasticsearch入门
查看>>
大数据学习:Hadoop入门学习书单
查看>>