发布订阅者模式、观察者模式 - freddielovekqy/dung-beetle GitHub Wiki

从表面上看

观察者模式里,只有两个角色 —— 观察者 + 被观察者 而发布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个经常被我们忽略的 —— 经纪人Broker

往更深层次讲

观察者和被观察者,是松耦合的关系 发布者和订阅者,则完全不存在耦合

通俗的讲: 在观察者模式中依赖于 Subject 对象的一系列 Observer 对象在被通知之后只能执行同一个特定的更新方法 在发布订阅模式中则可以基于不同的主题去执行不同的自定义事件。相对而言,发布订阅模式比观察者模式要更加灵活多变。

从使用层面上讲

观察者模式,多用于单个应用内部 发布订阅模式,则更多的是一种跨应用的模式(cross-application pattern),比如我们常用的消息中间件