观察者模式中主体和观察者是互相感知的,发布-订阅模式是借助第三方来实现调度的,发布者和订阅者之间互不感知  * reference: * [观察者模式 vs 发布-订阅模式](https://juejin.im/post/5a14e9edf265da4312808d86)
Activity
fingerpan commentedon Mar 1, 2019
1042478910 commentedon Mar 1, 2019
可不可以理解 为 观察者模式没中间商赚差价
发布订阅模式 有中间商赚差价
GitHdu commentedon Mar 2, 2019
观察者模式依赖一旦改变就会触发更新,而订阅发布模式则需要手动触发更新
alanchanzm commentedon Mar 2, 2019
联系
发布-订阅模式是观察者模式的一种变体。发布-订阅只是把一部分功能抽象成一个独立的ChangeManager。
意图
都是某个对象(subject, publisher)改变,使依赖于它的多个对象(observers, subscribers)得到通知。
区别与适用场景
总的来说,发布-订阅模式适合更复杂的场景。
在「一对多」的场景下,发布者的某次更新只想通知它的部分订阅者?
在「多对一」或者「多对多」场景下。一个订阅者依赖于多个发布者,某个发布者更新后是否需要通知订阅者?还是等所有发布者都更新完毕再通知订阅者?
这些逻辑都可以放到ChangeManager里。
fingerpan commentedon Mar 4, 2019
应该是观察者模式。 vue的事件通讯机制才是发布订阅模式
rocky-191 commentedon Mar 6, 2019
数据劫持+发布订阅
fingerpan commentedon Mar 6, 2019
从命名上就可以区别,观察者(observer)和主题(subject)对象
qiuguixin commentedon Apr 20, 2019
观察者模式为一刀切模式,对所有订阅者一视同仁
发布订阅模式 可以戴有色眼镜,有一层过滤或者说暗箱操作😄
vian94 commentedon May 12, 2019
https://juejin.im/post/5cd81a20e51d453b4558d858
halionn commentedon Jun 18, 2019
发布-订阅增加了一个中介者,发布者和订阅着只和中介者打交到。中介者持有发布者和订阅者都引用或传入的回调,用来做订阅和通知。
xxxin128 commentedon Jul 10, 2019
观察者模式由具体目标调度,每个被订阅的目标里面都需要有对观察者的处理,会造成代码的冗余。而发布订阅模式则统一由调度中心处理,消除了发布者和订阅者之间的依赖。
monw3c commentedon Jul 11, 2019
低耦合和完全解藕
Hunterang commentedon Jul 11, 2019
多个发布订阅构成观察者模式,触发条件的话,感觉都是类似监听的方式,区别不明显
PatrickLh commentedon Jul 11, 2019
参考了Java的部分实现,观察者模式代码如下:
而使用订阅发布模式,使用中间订阅发布对象的方式如下
自己认为,两种模式本质都是一样的,主要关键点都在于注册(添加到注册数组中)和触发(触发注册数组中的内容),只是订阅/发布模式对注册和触发进行了解耦。可以看到,使用订阅发布模式中发布者触发publish的时候,可以选择触发哪一些订阅者集合(因为publish参数传递了中间集合,可以定义多个pubsub集合),而观察者模式则只能触发所有的被观察对象。
32 remaining items