前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最快速度搞懂:Js观察者模式,为学习vue源码而准备

最快速度搞懂:Js观察者模式,为学习vue源码而准备

作者头像
web前端教室
发布2018-02-07 12:05:47
1K0
发布2018-02-07 12:05:47
举报
文章被收录于专栏:web前端教室web前端教室

观察者模式嘛,大段的概念我就不贴了。

大体上是,

  • 1、松耦合的代码;
  • 2、一对多的关系;
  • 3、主体状态变化时,所有依赖被通知;
  • 4、主体和观察者互不知晓。

基本上,满足上面四点的,就可以算是观察者模式了。来看一个demo,

它们的运行关系是这样的,

  • 1、发布对象pub已经存在;
  • 2、订阅对象[sub1,sub2,sub3]也已经存在;
  • 3、然后主体Dep函数...pub.actions()来发布消息;
  • 4、触发订阅执行update()方法;

我觉得,其实就是先把dep的相关方法写好,放在某个地方,在需要的时候一执行,就算通知了。

这叫啥广播嘛,无非是把一些方法扔到集合里,然后在需要的时候,for循环排量执行而已。要我说呀,这就是个“某事件触发的回调”。

我觉得第3部分就是观察者模式的关键了,什么情况要发布通知?具体的状态更新逻辑写在哪里?我觉得都是在这里解决。

这个小demo,细看之下你会发现,我总觉得所谓的观察者模式,就类似于把家里的电闸合上,一瞬间就把主体和依赖这二方给连通了。

为啥今天想起来写观察者模式呢?因为我的零基础课,已经讲到一半了,再过几天把电商项目做完后,我计划带他们看一看jq源码,虽然简单,但jq是个很优秀的框架,里面很有一些思路。

再然后就要讲vue,reqct,然后计划带他们适当的看一看vue的源码。而vue它是一个mvvm的框架,我个人主观觉得吧,如果先理解观察者模式之后,再来看mvvm方面的东西会比较好一些。原型模式已经用了那么久了,明天周末,给他们讲观察者。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档