博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式 vs 发布-订阅模式
阅读量:4334 次
发布时间:2019-06-07

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

观察者模式和发布-订阅模式到底有没有区别?

在很多资料和书籍中,他们两者是相等的,但事实真是这样吗?

首先看一下观察者模式:

是一个对象,维护一个依赖列表,当状态发生改变时,会自动通知它们    

来自

这就好比:你对 Google 的某个职位很感兴趣,但该职位目前已经没有空缺,于是你给 HR 留下了你的电话,HR 保证当职位空缺时会通知你。同时对这个职位感兴趣的候选人还有成百上千个,所以当职位空缺大家都会知道,如果你回应了 HR 的通知,HR 就会联系你进行面试。

角色对比:Google 公司就是一个 Subject 对象,维护了 Observers (像你一样的候选人列表),当状态改变(职位空缺)就会 notify 候选人

See the Pen by 286810 () on .

然后看一下发布-订阅模式:

消息的发送方叫发布者(publisher),消息不会直接发送给特定的订阅者(subscriber)

意思就是发布者和订阅者不知道对方的存在。需要一个第三方组件,叫做信息中介,它将订阅者和发布者串联起来,它过滤和分配所有输入的消息。

来源: 

最后,看一下对比图:

来源: 

总结:

  • 在观察者模式中,Observers(观察者)是知道Subject的,Subject一直保持对Observers(观察者)进行记录。然而,在发布订阅模式中,Publisher(发布者)和Subscriber(订阅者)不知道对方的存在。它们只有通过消息队列进行通信。

  • 在发布订阅模式中,组件是低耦合的,正好和观察者模式相反。

  • 观察者模式大多数时候是同步的,比如当事件触发,Subject就会去调用观察者的方法。而发布-订阅模式大多数时候是异步的(使用消息队列)。

  • 观察者 模式需要在单个应用程序地址空间中实现,而发布-订阅更像交叉应用模式。

 

参考:https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c

转载于:https://www.cnblogs.com/kuangliu/p/7922216.html

你可能感兴趣的文章
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>
实验三
查看>>
机器码和字节码
查看>>
环形菜单的实现
查看>>
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
thymeleaf 自定义标签
查看>>
关于WordCount的作业
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>
linear-gradient常用实现效果
查看>>