千家信息网

C++装饰模式怎么使用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"C++装饰模式怎么使用",在日常操作中,相信很多人在C++装饰模式怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++装饰模式怎么使用"的疑惑
千家信息网最后更新 2025年01月19日C++装饰模式怎么使用

这篇文章主要介绍"C++装饰模式怎么使用",在日常操作中,相信很多人在C++装饰模式怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++装饰模式怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

C++ 设计模式 装饰模式
在结构型模式中装饰模式给我留下了深刻的印象,其中也感觉到在设计模式中基本都是
依赖C++的多态来实现,装饰模式也不例外,他允许在不改变原有类的代码的基础上,
不通过直接继承原有类的代码通过一个抽象接口层进行实现,甚至可以随意的组合,
所以这里记录之以备使用
下面是模型图:

下面是一个简单的模拟代码,模拟本来一个工具只有写功能,但是我们要不断的扩充其
功能让它有听有读的功能:
这是跑出来的结果
----source tool----
i can write!!
-----can listen tool-----
i can write!!
i can listene !!
----can read tool------
i can write!!
i can read !!
----can listen and read tool------
i can write!!
i can read !!
i can listene !!


下面是代码:

  1. #include

  2. using namespace std;

  3. /*装饰模式

  4. *装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责

  5. */

  6. class ABS_TOOL

  7. {

  8. public:

  9. virtual ~ABS_TOOL(){}

  10. virtual void fun() = 0; //功能接口

  11. };



  12. class write:public ABS_TOOL

  13. {

  14. public:

  15. virtual void fun()

  16. {

  17. cout<<"i can write!!\n";

  18. }

  19. };


  20. class listen:public ABS_TOOL //继承

  21. {

  22. public:

  23. virtual ~listen(){}

  24. listen(ABS_TOOL* tool) //依赖

  25. {

  26. this->tool = tool;

  27. }

  28. virtual void fun()

  29. {

  30. tool->fun();

  31. cout<<"i can listene !!\n";

  32. }

  33. private:

  34. ABS_TOOL* tool; //聚合

  35. };


  36. class read:public ABS_TOOL //继承

  37. {

  38. public:

  39. virtual ~read(){}

  40. read(ABS_TOOL* tool) //依赖

  41. {

  42. this->tool = tool;

  43. }

  44. virtual void fun()

  45. {

  46. tool->fun();

  47. cout<<"i can read !!\n";

  48. }

  49. private:

  50. ABS_TOOL* tool; //聚合

  51. };



  52. int main(void)

  53. {

  54. cout<<"----source tool----\n";

  55. write test1;

  56. test1.fun();

  57. cout<<"-----can listen tool-----\n";

  58. listen test2(&test1);

  59. test2.fun();

  60. cout<<"----can read tool------\n";

  61. read test3(&test1);


  62. test3.fun();

  63. cout<<"----can listen and read tool------\n";

  64. listen test4(&test3);

  65. test4.fun();



  66. return 0;

  67. }

到此,关于"C++装饰模式怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

模式 C++ 代码 功能 学习 接口 更多 设计模式 帮助 设计 多态 实用 接下来 中装 动态 印象 只有 基础 对象 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 代理服务器安全吗 广东gps时钟监控网关服务器 情感欺骗属于网络安全危害吗 湖南聚宝盆网络技术 2021年江苏省网络安全协会 苏州网站建设软件开发 西安英慧达网络技术有限公司 如何查看数据库默认的字符集 江北区技术软件开发服务常见问题 阿里服务器搭建ss 数据库两个主码中哪个是外码举例 云服务器100m 福州康乐网络技术 定制物联网大数据平台软件开发 国家网络安全人才项目 龙汇网络技术有限公司 西安java软件开发行情 四川安卓软件开发定做 英雄联盟山东有哪些服务器 无锡博世集团软件开发 北邮网络技术研究院复试结果 河南一站式软件开发预算 流氓软件开发商去死 宿州企业软件开发外包公司 君亿网络技术服务中心 班牌软件开发公司 重庆十大软件开发公司哪家好 数据库将学生成绩改为整型 上海软件开发一个月工资多少钱 软件开发开票是什么税率
0