观察者模式与发布/订阅者模式区别

本文对比分析了观察者模式和发布/订阅者模式。观察者模式中,被观察者直接通知观察者,两者之间存在耦合;而发布/订阅模式通过中间的发布通道解耦,允许异步通信。两种模式在应用程序中有着不同的适用场景。
摘要由CSDN通过智能技术生成

观察者模式

观察者模式: 一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。

例如: 儿子告诉老妈:“一会儿饭做好,我回来吃饭”
上面问题概述起来,适用观察者模式有几个要素:被观察者(老妈)、观察者(儿子)、事件(老妈是否做好饭)和由被观察者维护的观察者列表(老妈知道要回家吃饭的是谁)。
观察者模式

  1. 在观察者模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。
  2. 观察者模式大多数时候是同步的,比如当事件触发,Subject就会去调用观察者的方法。

发布/订阅者模式

发布-订阅者模式: 相比在观察者模式中,发布者和订阅者之间多了一个发布通道;一方面从发布者接收事件,另一方面向订阅者发布事件;订阅者需要从事件通道订阅事件,解决了主体对象与观察者之间功能的耦合, 以此避免发布者和订阅者之间产生依赖关系。

例如: 微信公众号
订阅者: 只需要订阅(关注)微信公众号
发布者(公众号): 发布新文章的时候,推送给所有的订阅者

  • 发布-订阅者模式的优势:
  1. 解耦合
  2. 订阅者不用每次都去查看公众号是否有新的文章
  3. 发布者不需要谁订阅了它,只要给订阅者推送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值