观察者模式:定义了一对多的关系,让多个观察者对象同时监听某一个主体对象,这个主体对象发生变化时就会通知所有的观察者对象,使得他们能够自己更新自己。
// 观察者模式
interface IObserver{
nameChanged: (newName: string) => void;
}
class Person{
private _name: string;
// 所有的观察者
observers: Array<IObserver> = new Array<IObserver>;
constructor(){
this._name = '';
}
set name(value: string){
this._name = value;
// 发生变化,遍历所有观察者,给所有观察者发消息
for(let observer of this.observers){
observer.nameChanged(this._name)
}
}
get name(){
return this._name;
}
}
class Test implements IObserver{
nameChanged(newName: string){
document.write("监听到变化,名字为:" + newName);
}
}
let person = new Person();
let test = new Test();
person.observers.push(test);
person.name = '哈哈哈哈';