视察者形式
望文生义,有视察者 被视察者, 这两是有关联的
被视察者状况转变时,触发视察者的 行动
// 被视察者
function Observer(){
this.state = '默许状况';
this.arr = [];// 用来存储一切的视察者
}
// 晓得谁在 视察本身
Observer.prototype.attch = function(s){
// 存储主动视察者
this.arr.push(s);
}
// 被视察者状况
Observer.prototype.setState = function(newState){
this.state = newState;
// 只需状况转变就关照一切的视察者,孩子饿了就会朝着爸妈哭
this.arr.forEach(s=>s.update(newState))
}
// 定义视察者
/**
* name: 视察者
* target: 被视察者
**/
function Subject(name,target){
this.name = name;
this.target = target;
}
// 获得状况后的回响反映
Subject.prototype.update = function(newState){
console.log(this.name + '视察到状况' + newState);
}
let o = new Observer();
let s1 = new Subject('父亲',o);
let s2 = new Subject('母亲',o);
o.attch(s1);
o.attch(s2);
o.setState('饿了');