观察者和发布订阅模式的区别 - 只喝牛奶的杀手
观察者和发布订阅模式的区别
2018-11-10 16:59
只喝牛奶的杀手
阅读(21925)
评论(7)
编辑
收藏
举报
观察者模式和发布订阅模式有什么区别?大多数的回答都是:Publishers + Subscribers = Observer Pattern,24种基本的设计模式并没有发布-订阅模式,发布订阅模式属于并发型模式;像典型的Mq;这两种相似单并不可以划等号。
Observer Pattern
观察者模式有一个别名叫“订阅—发布模式”。报纸大家都订过吧,当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报纸,报社就会发多少份报纸,这是典型的订阅—发布模式,报社和订报纸的客户就是上面文章开头所说的“一对多”的依赖关系。
Pub-Sub Pattern
简而言之,这两种模式之间的主要区别可以如下所示:
- 在Observer模式中,Observers知道Subject,同时Subject还保留了Observers的记录。然而,在发布者/订阅者中,发布者和订阅者不需要彼此了解。他们只是在消息队列或代理的帮助下进行通信。
- 在Publisher / Subscriber模式中,组件是松散耦合的,而不是Observer模式。
- 观察者模式主要以同步方式实现,即当某些事件发生时,Subject调用其所有观察者的适当方法。发布者/订阅者在大多情况下是异步方式(使用消息队列)。
- 观察者模式需要在单个应用程序地址空间中实现。另一方面,发布者/订阅者模式更像是跨应用程序模式。
尽管这些模式之间存在差异,但有些人可能会说发布者 – 订阅者模式是观察者模式的变体,因为它们之间存在概念上的相似性,但并不是一样的,欢迎拍砖!
参考文档:https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c