C++ 观察者模式

本文详细介绍了C++中的观察者模式,包括模式背景、结构、优缺点、适用场景和实例分析。观察者模式解决了应用程序中部分状态改变时需要更新其他部分的问题,避免了CPU资源浪费和依赖更新间隔的问题。文章通过滴滴打车的例子说明了该模式的应用,并提供了代码实现,展示了如何创建抽象主题、具体主题、抽象观察者和具体观察者。

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

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

观察者模式(Observer Pattern),定义了对象间的一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(被观察者)。当主题对象的状态发生更改时,会通知所有观察者,让它们能够自动更新。

背景

很多时候,在应用程序的一部分发生更改时,需要同时更新应用程序的其他部分。有一种方法是:让接收者反复检查发送者来进行更新,但是这种方法存在两个主要问题:

  • 占用大量的 CPU 时间来检查新的状态
  • 依赖于检测更新的时间间隔,可能不会立即获得更新

对于这个问题,有一个简单的解决方案 - 观察者模式。

模式结构

UML 结构图:

在这里插入图片描述

  • Subject(抽象主题):跟踪所有观察者,并提供添加和删除观察者的接口。
  • Observer(抽象观察者):为所有的具体观察者定义一个接口,在得到主题的通知时进行自我更新。
  • ConcreteSubject(具体主题):将有关状态存入各 ConcreteObserv
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一去丶二三里

有收获,再打赏!

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

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

打赏作者

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

抵扣说明:

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

余额充值