博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者和发布订阅者区别
阅读量:4130 次
发布时间:2019-05-25

本文共 906 字,大约阅读时间需要 3 分钟。

答案:

他们都属于观察者模式,只不过有不同的实现方法。发布订阅相比于观察者多了一个调度中心,发布者通过调度中心向订阅者发布消息。观察者模式中目标和观察者相互依赖,观察者订阅目标主题,当目标发生变化后,会通知对应观察者。

 

详细解析:

设计模式的定义是:在面向对象软件设计过程中针对特定问题的一种解决方案。

设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案,他不是一个死的机制,他是一种思想,一种写代码的形式。

观察者模式(Observer Pattern)

观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。

发布订阅模式(Pub-Sub Pattern)

在现在的发布订阅模式中,称为发布者的消息发送者不会将消息直接发送给订阅者,这意味着发布者和订阅者不知道彼此的存在。在发布者和订阅者之间存在第三个组件,称为消息代理或调度中心或中间件,它维持着发布者和订阅者之间的联系,过滤所有发布者传入的消息并相应地分发它们给订阅者。

举一个例子,你在微博上关注了A,同时其他很多人也关注了A,那么当A发布动态的时候,微博就会为你们推送这条动态。A就是发布者,你是订阅者,微博就是调度中心,你和A是没有直接的消息往来的,全是通过微博来协调的(你的关注,A的发布动态)。

这两个模式的实现结构:

观察者模式和发布订阅模式最大的区别就是发布订阅模式有个事件调度中心

观察者模式:观察者(Observer)直接订阅(Subscribe)主题(Subject),而当主题被激活的时候,会触发(Fire Event)观察者里的事件。

发布订阅模式:订阅者(Subscriber)把自己想订阅的事件注册(Subscribe)到调度中心(Topic),当发布者(Publisher)发布该事件(Publish topic)到调度中心,也就是该事件触发时,由调度中心统一调度(Fire Event)订阅者注册到调度中心的处理代码。

转载地址:http://ajuvi.baihongyu.com/

你可能感兴趣的文章
流形学习-高维数据的降维与可视化
查看>>
Python-OpenCV人脸检测(代码)
查看>>
python+opencv之视频人脸识别
查看>>
人脸识别(OpenCV+Python)
查看>>
6个强大的AngularJS扩展应用
查看>>
网站用户登录系统设计——jsGen实现版
查看>>
SpringMVC---02---SpringMVC工作流通(详细图文)、使用注解进行SpringMVC开发
查看>>
每日算法----最长公共前缀----2020/09/29(1/4)
查看>>
每日算法----有效括号----2020/09/30(2/4)
查看>>
每日算法----69. x 的平方根---2020/11/02
查看>>
SpringMVC---Ajax具体说明加详细例子
查看>>
每日算法----70. 经典爬楼梯----2020/11/03
查看>>
String类equals方法详解(包含同类不同对象访问value)
查看>>
find命令详解
查看>>
ffmpeg移植
查看>>
valgrind for android 编译安装
查看>>
VSYNC on Android N
查看>>
[mpeg4]mpeg4码流分析
查看>>
N-vop、S-vop、Packed Bistream
查看>>
H264/AVC视频解码时AVC1和H264的区别 .
查看>>