我的理解:观察者模式又叫订阅/发布模式。被观察者(发布者)内部需要有一些东西来处理观察者(订阅者)的方法。
发布者对象paper 需要有以下这些成员:
1、subscribers:
一个数组
//存储每个事件类型下的订阅者。每个类型下订阅者是一个数组。
2、subscribe():
将订阅者添加到subscribers数组
//订阅者订阅某个类型,传入对应的回调函数。
3、unsubscribe():
从订阅者数组subscribers删除订阅者。
4、publish():
循环遍历subscribers中的每个元素,并且调用他们注册时所提供的方法。
5、visitSubscribers()
遍历操作订阅对象的方法。帮助方法。
如下:
发布者;
创造一个发布者;
发布者对象
订阅者对象
发布事件 和结果
观察者模式主要应用于对象之间一对多的依赖关系,当一个对象发生改变时,多个对该对象有依赖的其他对象也会跟着做出相应改变,这就非常适合用观察者模式来实现。使用观察者模式可以根据需要增加或删除对象,解决一对多对象间的耦合关系,使程序更易于扩展和维护。
基础知识:
观察者模式定义了对象间的一种一对多依赖关系,每当一个对象发生改变时,其相关依赖对象皆得到通知并被进行相应的改变。观察者模式又叫做发布-订阅模式。生活中有很多类似的关系,比如微信公众号订阅,多个读者订阅一个微信公众号,一旦公众号有更新,多个读者都会收到更新,而这种情况在应用程序中也非常常见,js绑定各种事件本质上就是观察者模式的实现。
观察者模式是一个非常有用的设计模式,它主要有两个角色组成:
(1)目标对象:作为一对多关系中的一,可以用来管理观察者的增加和删除。
(2)观察者对象:观察目标对象,一旦目标发生改变则做出相应的反应。
更多详解查看:网页链接,希望可以帮到你