js异步解决方案之观察者模式 在观察者模式里面就是被观察者,它只需要维护一套观察者的集合,将有关状态的任何变更,自动通知给他们的watcher(观察者),这个设计是松耦合的。 观察者模式和发布订阅模式还是不一样的,很多人会把它们混为一谈。 在发布订阅模式中,发布者和订阅者之间没有关系,他们通过消息中心去发布和订阅。 上次分享了发布订阅模式,简单来说就是有一个对象,往里面push一个类型a和一个回调,就是订阅a。 当判断有a的时候就去执行回调,就是发布a。 而观察者模式中,发布者和订阅者是互相联系的。 代码实现观察者模式 当对象之间存在一对多的依赖关系时,其中一个对象的状态发生改变,所有依赖它的对象都会收到通知,这就是观察者模式 观察者模式中有两个类,一个是目标对象,一个是观察者。 目标对象: s1:维护观察者列表 s1:定义添加观察者的方法 s3:当自身发生变化后,通知每个观察者调用update方法 观察者: 定义自己的update方法,给目标对象调用。 一个完整的建议实现 |