观察者模式

给你一囗甜甜゛ 提交于 2019-11-26 10:59:50
//被观察者
class Subject {
  constructor(name) {
      this.name = name;
      this.observers = [];
      this.status = 'happy';
  }
  //被观察者提供一个方法 接受观察者
  attach(observer) {
    this.observers.push(observer);
  }
  setStatus(newStatus) {
       this.status = newStatus;
       this.observers.forEach(o=>o.update(newStatus));
  }
}
//观察者
class Observer {
    constructor(name){
        this.name = name;
    }
    update(newStatus){ // 用来通知所有的观察者状态更新了
        console.log(this.name+'说:孩子'+newStatus);
    }
}
let sub = new Subject('孩子');
let o1 =new Observer('父亲');
let o2 =new Observer('母亲');
let o3 =new Observer('爷爷');
let o4 =new Observer('奶奶');
sub.attach(o1);
sub.attach(o2);
sub.setStatus('bad')

输出:

父亲说:孩子bad
母亲说:孩子bad
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!