C++设计模式_06_Decorator 装饰模式

26 篇文章 1 订阅 ¥9.90 ¥99.00
本文探讨了C++中的Decorator装饰模式,旨在解决因职责划分不清晰导致的继承类膨胀问题。通过代码演示,展示了如何从基于继承的实现转变为利用组合关系重构,以减少重复代码并提高灵活性。文章解释了模式动机、定义、结构和要点总结,强调了装饰模式在动态扩展对象功能方面的优势。
摘要由CSDN通过智能技术生成

本篇将会介绍Decorator 装饰模式,它是属于一个新的类别,按照C++设计模式_03_模板方法Template Method中介绍的划分为“单一职责”模式
“单一职责”模式讲的是在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。

典型的模式包括:Decorator Bridge。这是因为这两种模式在责任的问题上表现得特别突出,但不意味着其他模式没有责任问题。
本篇主要介绍Decorator 装饰模式

1. 代码演示Decorator 装饰模式

首先结合实际场景和代码进行分析
设计场景:设计一些IO库,涉及一些流操作,针对流的操作,我们具有很多需求,比如文件流、网络流、内存流等,也有对流进行加密,进行缓存等操作。

1.1 基于继承的常规思维处理

首先我们可能会想到流的设计首先需要一个基类,基类有一些例如:Read()、Seek()、Write()等方法的公共操作,作为纯虚函数,放到Stream基类中。文件流FileStream继承自Stream基类,override Read()、Seek()、Write()等虚函数。网络流NetworkStream、内存流MemoryStream操作也是类似的

当我们进行加密操作时可以发现,首先我们需

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值