发表于: 2020-01-17 21:25:27

1 1399


今日完成:

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个目标对象,当这个目标对象的状态发生变化时,会通知所有观察者对象,使它们能够自动更新。

在观察者模式里,至少应该有两个关键角色是一定要出现的——发布者和订阅者。用面向对象的方式表达的话,那就是要有两个类。

        // 定义发布者类

    class Publisher {

      constructor() {

        this.observers = []

        console.log('Publisher created')

      }

      // 增加订阅者

      add(observer) {

        console.log('Publisher.add invoked')

        this.observers.push(observer)

      }

      // 移除订阅者

      remove(observer) {

        console.log('Publisher.remove invoked')

        this.observers.forEach((item, i) => {

          if (item === observer) {

            this.observers.splice(i, 1)

          }

        })

      }

      // 通知所有订阅者

      notify() {

        console.log('Publisher.notify invoked')

        this.observers.forEach((observer) => {

          observer.update(this)

        })

      }

    }



返回列表 返回列表
评论

    分享到