js的观察者模式和订阅发布模式
联系
两种模式本质都是一样的,都是某个对象(subject, publisher)改变,使依赖于它的多个对象(observers, subscribers)得到通知。
区别
发布-订阅模式是观察者模式的一种变体。发布-订阅只是把一部分功能抽象成一个独立的ChangeManager。
主要关键点都在于注册和触发,只是订阅/发布模式对注册和触发进行了解耦。
订阅发布模式中发布者触发的时候,可以选择触发哪一些订阅者集合,而观察者模式则只能触发所有的被观察对象
适用场景
总的来说,发布-订阅模式适合更复杂的场景。
比如「一对多」「多对一」或者「多对多」场景。