发布订阅者模式和观察者模式的区别

发布订阅者模式和观察者模式的区别

1.什么是观察者模式
定义:当对象之间存在一对多的依赖关系时,其中一个对象的状态发生改变,所有依赖它的对象都会收到通知,这就是观察者模式。

在观察者模式中,只有两种主体:目标对象 (`Object`) 和 观察者 (`Observer`)。

目标对象 `Subject`:

- 维护观察者列表 `observerList`
- 定义添加观察者的方法
- 当自身发生变化后,通过调用自己的 `notify` 方法依次通知每个观察者执行 `update` 方法

观察者 Observer 需要实现 update 方法,供目标对象调用。update方法中可以执行自定义的业务逻辑 ———— 弟子们需要定义接收任务通知后的方法,例如去抢任务或任务不适合,继续等待下一个任务

2.什么是发布订阅模式
定义:基于一个事件(主题)通道,希望接收通知的对象 Subscriber 通过自定义事件订阅主题,被激活事件的对象 Publisher 通过发布主题事件的方式通知各个订阅该主题的 Subscriber 对象。

因此发布订阅模式与观察者模式相比,发布订阅模式中有三个角色,发布者 Publisher ,事件调度中心 Event Channel ,订阅者 Subscriber
目标对象 Subject:

任务发布者 —— Publisher

中介功能 —— Event Channel

  • 维护任务类型,以及每种任务下的订阅情况
  • 给订阅者提供订阅功能 —— subscribe 功能
  • 当宗门发布任务后,中介会给所有的订阅者发布任务 —— publish 功能

任务接受者 —— Subscriber

观察者 Observer 需要实现 update 方法,供目标对象调用。update方法中可以执行自定义的业务逻辑

发布者和订阅者不知道对方的存在。需要第三方中介,将订阅者和发布者串联起来,利用中介过滤和分配所有输入的消息。也就是说,发布-订阅模式用来处理不同系统组件的信息交流,即使这些组件不知道对方的存在

例子:

平台提供了消息订阅功能,如果你选择订阅,平台更新电视剧后,会第一时间发消息通知你,订阅后,你就可以愉快的追剧了。

上面案例中,电视剧就是发布者 Publisher,追剧人就是订阅者 Subscribe,平台则承担了事件通道 Event Channel 功能。

总结:

在这里插入图片描述

可参考
https://juejin.cn/post/7055441354054172709#heading-4

写的很好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值