观察者模式
观察者模式定义了主题(Subject)和观察者(Observer)之间一对多的关系,在主题有更新时,调用观察者更新接口来通知观察者;
其UML图如下:
观察者模式.png
订阅发布模式
订阅发布模式中存在一个消息发布者(publisher)和消息订阅者(subscriber),消息发布者向消息代理者分发消息,而消息代理者负责将这些消息分别转发给消息订阅者,在整个过程中,消息发布者和消息订阅者都不知道彼此的存在。其具体流程图如下:
发布订阅模式.png
观察者模式和订阅发布模式区别
-
在观察者模式中,主题和观察者是彼此都知道对方的,就好像微信公众号和关注者;而订阅发布模式中,消息发布者和订阅者是不知道彼此的,就好像报纸投稿人和报纸订阅者,报纸订阅者并不关系投稿人是谁,而在乎的是报纸的主题,而报纸投稿人也不再到自己写的这篇报告会有哪些人订阅。
-
观察者模式多数情况下是同步的,当有事件发生时,就去调用观察者相应方法;而发布订阅者往往是异步的,使用消息队列;
-观察者一般在单个应用地址空间实现,而发布订阅更像交叉应用模式;
网友评论