在读《设计模式》时, 观察者模式一直理解为订阅者 / 发布者 , 其实这两种模式还是有差异的.
一, 观察者模式
相关概念: 目标和观察者是基类, 目标提供维护观察者的一系列方法, 观察者提供更新接口. 具体观察者和具体目标继承各自的基类, 然后具体观察者把自己注册到具体目标里, 在具体目标发生变化时候, 调度观察者的更新方法.
二, 订阅模式
相关概念: 订阅者把自己想订阅的事件注册到调度中心, 当该事件触发时候, 发布者发布该事件到调度中心(顺带上下文), 由调度中心统一调度订阅者注册到调度中心的处理代码.
三, 异同点
1. 最主要的区别就是观察者模式中, 当目标变化时, 是由目标 (发布者) 去调动注册者(订阅者), 调用相应处理代码; 在订阅模式中, 是由调度中心统一去注册订阅者, 当发布者变化时, 也是由调度中心去调用订阅者. 相比观察者模式, 订阅模式更加解耦, 而观察者模式依赖很强;
2. 两种模式在适当业务场景都可以减少代码复用
[设计模式]观察者模式与订阅模式
来源: http://www.bubuko.com/infodetail-2950110.html