观察者模式(自定义事件)
目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供更新接口。具体观察者和具体目标继承各自的基类,然后具体观察者把自己注册到具体目标里,在具体目标发生变化时候,调度观察者的更新方法。
1 | // 观察者(订阅者) |
发布-订阅
理解
发布-订阅模式,用个对象作为调度中心,绑定事件名为属性。订阅者把自己想订阅的事件注册到调度中心,发布者发布事件到调度中心时,即触发这个事件,由调度中心统一调度订阅者注册到调度中心的处理代码。
优点
- 支持简单的广播通信,当对象状态发生改变时,会自动通知已经订阅过的对象。
- 发布者与订阅者耦合性降低,发布者只管发布一条消息出去,它不关心这条消息如何被订阅者使用,同时,订阅者只监听发布者的事件名,只要发布者的事件名不变,它不管发布者如何改变。
缺点
- 创建订阅者需要消耗一定的时间和内存。
- 虽然可以弱化对象之间的联系,如果过度使用的话,反而使代码不好理解及代码不好维护等等。
一个简单的发布订阅
1 | var event = { |
不同
观察者模式的订阅者和发布者之间是存在依赖的,发布订阅模式的不会。