[GoF设计模式]Decorator模式和Observer模式的C++实现

本文介绍了装饰者模式和观察者模式的应用实例。装饰者模式通过组合方式为类添加职责,提高了扩展性;观察者模式则建立了主题与多个观察者之间的联系,确保主题状态变化时观察者能及时响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Decorator模式】

Decorator模式提供了一种给类增加职责的方法,不是通过直接继承实现的,而是通过组合,下图中的WorkerDecorator类可以派生很多在Worker基础上扩展出来的类,而不仅仅只是SeniorWorker,可以有不同的扩展。这是装饰者模式的威力所在。

但是如果只是给WorkComponent添加一个修饰,WorkDecorator可以省去,但以后可扩展性就不强了。

注意:基类指针指向派生类时,通过该指针只能访问到基类中所提供的接口。

Decorator采用组合的方式取得了比采用继承的方式更好的效果。

 

【图解】

 普通的工人能够进行粉墙和喷漆的工作,现在需要技术工人,即掌握粉墙和喷漆的能力外,还需要有进行设计的能力。

 2

 

【程序】

 

 

 

 

 

【输出】

1

 

 

【Observer模式】

Observer模式是应用最多影响最广的模式,MVC就是基于Observer模式的,改模式在系统开发和设计过程中有重要意义,MVC实现了业务层和表示层的解耦。Observer模式也是开发过程中必须要掌握的使用模式之一。

建个一(subject)对多(observer)的关系,当一发生变化的时候,依赖一的多也能同步改变。

【图解】

当温度数据发生变化时,我们期望反应温度数据的柱状图型和曲线图也能同步做出更新。

1

 

【程序】

 

 

 

 

 

 

 

【输出】

3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值