发布订阅者模式

213 阅读1分钟

目标: 让各个模块之间的联系不那么紧密

如果修改了什么属性,就尽可能只更新这些属性对应的页面DOM

例子: 预售

1、可能一个东西没有现货,我向老板预定,如果东西到了,就通知我

=》老板是发布者

=》 订阅的东西作为中间媒介

=》我是订阅者

  1. 需要一个全局容器,用来存储 可以被触发的 (对象,函数)
  2. 需要一个方法,可以往容器中传入 对象,函数
  3. 需要一个方法,可以将 容器中的对象/函数取出来

依赖收集

读取 将watcher存入全局容器中,被称为 依赖收集

派发更新

修改 将全局容器中的watcher取出执行,被称为 派发更新