一分钟设计模式:订阅和观察者模式

242 阅读1分钟
class Subject{
  constructor(name){
    this.name=name;
    this.observers=[];
    this.state="";
  }  
  attach(observer){
    this.observers.push(observer);
  }
  setState(state){
    this.state=state;
    this.observers.forEach(o=>o.update(state));
	console.log(this.name,state);
  }
}
class Observer{
  constructor(name){
	this.name=name;
  }
  update(newState){
    console.log(this.name,newState)
  }
}

let sub=new Subject('小宝');
let o1=new Observer('爸爸');
let o2=new Observer('妈妈');

sub.attach(o1);
sub.attach(o2);
sub.setState('心情不好');