TODO:观察者模式 Observer

  • 观察者模式包含观察目标观察者两个对象
  • 一个观察目标可以有任意数目的与之相依赖的观察者
  • 一旦观察目标的状态发生改变,所有的观察者都将得到通知
  • 常用于事件监听,可以实现回调函数的解耦
Event = function{
  var listen, log, obj, one, remove, trigger, __this;
  obj = {};
  __this = this;
  listen = function(key,callback){
    var stack, _ref;
    stack = (_ref = obj[key]) != null ? _ref : obj;
    return stack.push(callback);
  }
}
// 定义一个主体对象
class Subject {
  constructor() {
    this.observers = []; // 观察者
  }
  add(observer) { // 添加
    this.observers.push(observer)
  }
  remove(observer) { // 移除
    this.observers = this.observers.filter(item => item !== observer);
  }
  notify() { // 通知
    this.observers.forEach(item => {
      item.update();
    })
  }
}
// 定义观察着对象
class Observer {
  constructor(name) {
    this.name = name;
  }
  update() {
    console.log(`my name is:${this.name}`);
  }
}

// 调用
const observer1 = new Observer('observer1');
const observer2 = new Observer('observer2');

const subject = new Subject();
subject.add(observer1);
subject.add(observer2);
subject.notify();

TODO: JS Observable API

results matching ""

    No results matching ""