C++ 14观察者模式

本文介绍了C++ 14中的观察者模式,也称为发布-订阅模式。该模式定义了一对多的依赖关系,允许多个观察者对象监听某主题对象。当主题状态改变时,会通知所有观察者进行自动更新。内容包括Subject、Observer、ConcreteSubject和ConcreteObserver类的解释,并通过公司场景举例,描述了老板来上班时秘书如何通知员工的案例,附带了相关代码实现。
摘要由CSDN通过智能技术生成

观察者模式又叫发布-订阅(Publish/Subscribe)模式。

 

观察者模式的定义:

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主体对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。

观察者模式结构图如下:


Subject,它把所有对观察者对象的引用保存在一个列表(list或vector)里,每个主题都可以有任何数量的观察者,抽象主题提供两个接口,通过Attach/Detach函数添加/移除观察者对象,通过Notify函数通知每一个注册过的观察者对象。

Observer,是一个抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。

ConcreteSubject类,具体主题类,将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。

ConcreteObserver,具体观察者类࿰

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现观察者模式,首先需要定义一个Observer类,其中包含一个纯虚函数update(),用于接收并处理主题状态的更新。 接下来,创建一个具体的观察者类ConcreteObserver,该类继承自Observer类,并实现update()函数。在该函数中,可以通过调用主题对象的getStatus()函数来获取主题状态的更新,并进行相应的处理。 然后,定义一个主题类Subject,其中包含一个存储观察者对象的容器m_observers。该类提供了添加观察者、删除观察者和通知观察者的功能。在添加观察者时,可以使用m_observers.push_back(observer)将观察者对象添加到容器中;在删除观察者时,可以通过遍历容器找到对应的观察者对象,并使用m_observers.erase(iter)将其从容器中删除;在通知观察者时,通过遍历容器调用每个观察者的update()函数来更新观察者的状态。 这样,就完成了C++实现观察者模式的步骤。通过创建具体的观察者对象并将其添加到主题对象中,当主题状态发生变化时,观察者对象会相应地进行更新。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [设计模式-观察者模式 C++实现](https://blog.csdn.net/u012611878/article/details/72859047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值