C++设计模式新解四 观察者模式+事件订阅

定义:定义对象间的一种一对多关系的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

观察者模式又被称为发布/订阅模式,在这种模式中,一个目标物件(被观察者)管理所有相依于它的相关物件(观察者),并且在目标物件的状态发生改变时主动发出通知。这通常通过各物件所提供的方法来实现,观察者模式通常被用来做事件处理系统。

举个例子:老板就是被观察者,员工就是观察者,大家都看着老板的指挥行动,让你往东你就往东,让你往西你就往西,员工在老板处留下了不同的联系方式有Email,电话,手机,QQ,微信等,一旦老板做了决定就会主动通过不同的方式通知到大家。

再举个例子:用户界面是观察者,业务数据可以作为被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在用户界面上。


至少需要两个角色:观察者类和被观察者类。

在实现观察者模式的多种形式中,比较直观的是一种“注册----通知----撤销注册”的形式。

注册:在被观察者对象中,放置一个容器保存相关的观察者对象。

通知:一旦被观察对象中的状态发生变化,则通知容器中所有的观察者对象做出相应变化。

撤销注册:将被观察者对象容器中某个要撤销的观察者对象删除。


实际上这种实现方式不仅要包含被观察者和观察者类。因为观察者对象要把自己注册到被观察者对象容器中,被观察者不应该过问观察者的具体类型,而应该使用观察者提供的接口。优点是,假定还有别的观察者,那么只要这个观察者也是相同的接口实

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值