观察者模式

<script>
  // 发布者-目标
  class Dep {
    constructor () {
      // 记录所有的订阅者
      this.subs = []
    }
    // 添加订阅者
    addSub (sub) {
      if (sub && sub.update) {
        this.subs.push(sub)
      }
    }
    // 发布通知
    notify () {
      this.subs.forEach(sub => {
          sub.update()
      })
    }
}
// 订阅者-观察者
class Watcher {
  update () {
    console.log('update')
  }
}

// 测试
let dep = new Dep()
let watcher = new Watcher()

dep.addSub(watcher)

dep.notify()
</script>
posted @ 2022-04-18 10:45  有肌肉的小眼睛  阅读(16)  评论(0编辑  收藏  举报