0
点赞
收藏
分享

微信扫一扫

1.2 观察者模式

窗外路过了谁 2022-01-26 阅读 54

1、监听某个变量的值,当这个变量的值变化时,触发某个方法

oberver.js

//观察者
class Observers {
  constructor(name) {
    this.name = name;
  }
  update(target_value){
    console.log(this.name + ':a的值改变了,当前值为:' + target_value)
  }
}
exports = module.exports = Observers

target.js

//被观察者
class Target{
  constructor() {
    this.a = 0
    this.observers = []
  }
  add(o){
    this.observers.push(o)
  }
  change(value){
    if(value !== 0) {
      this.a = value
        this.observers.forEach(o => {
          o.update(this.a)
        })
    }
  }
}

exports = module.exports  = Target

test.js

const Target = require('./target')
const Observers = require('./observers')

const target = new Target();
const observer1 = new Observers('观察者1')
const observer2 = new Observers('观察者2')

target.add(observer1)
target.add(observer2)
target.change(8)
target.change(4)
/**
output:
观察者1:a的值改变了,当前值为:8
观察者2:a的值改变了,当前值为:8
观察者1:a的值改变了,当前值为:4
观察者2:a的值改变了,当前值为:4
*/

举报

相关推荐

0 条评论