章节
问答
课签
笔记
评论
占位
占位

观察者模式的理解

圣诞主题也少量运用一些设计模式,结合下实际的代码,让大家对模式的实际运用有一定的理解。这里主要讲解下最常见"观察者模式"的概念,并且在后面的代码会实际运用到

理论上说,观察者模式又叫发布-订阅模式,就是定义一个一对多的依赖关系,当一个对象的状态发生改变,所依赖它的对象将会得到这个改变的通知。在JS的实现级上,一般通过事件的方式模拟发布-订阅模式

简单的来说,我们可以这样想下,去商场买衣服,刚好断货了,特别喜欢的话就会留下电话,等待卖家通知,所以就是一个典型的发布-订阅的关系,买家不需要每天去询问是否到货,卖家到后才会主动通知

说了半天,在JS中用这个东东具体干嘛呢? 设计模式的核心就是为了解耦,解耦,解耦重要事说三遍。通过这个模式,一个对象可以不再显示的调用另外一个对象的接口了,或者不关心对象的内部运行状态,只对感兴趣的事件进行观察了,具体用法后续的页面切换会讲解到,这里先理解下如何实现这个模式的简单逻辑。

JS里对观察者模式的实现是通过回调来实现的,参考右边的代码observer.js,其内部包含了3个方法:订阅、退订、发布也就是对应的bind、unbind、trigger方法

创建一个观察者对象

var observer = new Observer();

通过调用subscribe方法,实现一个事件的观察

observer.subscribe("任务名",处理函数)

通过publish触发观察事件,在任意时刻触发了这个观察的任务名,将会触发这个事件订阅subscribe方法

 observer.publish("任务名")

取消事件订阅,意味着就不会执行了

 observer.unsubscribe("任务名")

观察者的使用场合就是:当一个对象的改变需要同时改变其它对象,并且它不知道具体有多少对象需要改变的时候,就应该考虑使用观察者模式。总的来说,观察者模式所做的工作就是在解耦,让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。概念是有一点抽象的,等到后面实际结合理解。

任务

?不会了怎么办
||

提问题

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

举报

0/150
提交
取消
全部 精华 我要发布
全部 我要发布
最热 最新
只看我的

手记推荐

更多

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?