观察者模式

47 阅读1分钟

观察者模式:定义了一对多的关系,让多个观察者对象同时监听某一个主体对象,这个主体对象发生变化时就会通知所有的观察者对象,使得他们能够自己更新自己。

// 观察者模式

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 = '哈哈哈哈';