-
观察者模式: 房地产中介在朋友圈发哪哪地铁口有房朝南大飘窗,他朋友圈要租房的人看到了这条朋友圈。
-
发布订阅模式: 有个房老五拎一串钥匙找到房地产中介要把自己哪几栋楼租出去,中介把房子信息发了条朋友圈,他朋友圈要租房的人看到了这条朋友圈。
这两种模式在概念上是相似的,最大的区别是观察者模式没有 中间商,其次还有:
-
观察者模式双方都知道对方的存在;而发布订阅模式的发布者和订阅者不知道对方的存在,它们通过一个中间商来通信。
-
观察者模式通信大多是同步的,当事件触发,Subject 就会通知 Observers。发布订阅模式通信大多是异步的(使用消息队列)。
-
观察者模式组件紧密耦合,发布订阅模式组件松散耦合。
-
观察者模式需要在单个应用程序地址空间中实现,而发布订阅模式更像交叉应用模式。