观察者模式和发布订阅模式的区别
在观察者模式的Subject就向一个发布者Publisher,观察者(Observer)和订阅者(Subscriber)关联。subject通知observers就像publisher发布一样。发布订阅模式从广义上来讲就是观察者模式的一种实现,但是两者是有区别的:
- Publisher和Subscriber不知道彼此的存在,需要中间的消息调度组件,它把两者联系起来。也就是说Publisher只管发布消息,Subscriber只管订阅消息,他们不直接联系。
- Subject是知道Observer的,Subject一直保持对观察者的记录。
- 观察者模式大多数时候是同步的,当事件触发,Subject就会通知观察者的方法;发布订阅模式多数时候是异步的(消息队列)
- 观察者在单个应用程序地址空间,发布订阅更像在交叉应用的模式。