观察者模式

// 被观察者
class Subject {
    constructor(name) {
        this.name = name;
        // 存放所有观察者
        this.observers = [];
        // 心情状态
        this.mood = "心情很美丽";
    }

    // 接受观察者方法
    attach(observer) {
        // 批量添加观察者
        this.observers.push(observer);
    }

    setMood(newMood) {
        this.mood = newMood;
        this.observers.forEach(o => o.update(newMood))
    }

}

// 观察者
class Observer {
    constructor(name) {
        this.name = name;
    }

    // 更新状态时
    update(newMood) {
        console.log(newMood)
    }
}

let sub = new Subject('girl');
let o1 = new Observer('boy');
let o2 = new Observer('father');
sub.attach(o1);
sub.attach(o2);
sub.setMood('心情很糟糕');

观察者模式就是当我发生改变时候,通知观察者执行相应事件

posted @ 2020-06-27 10:39  彼_岸  阅读(127)  评论(0编辑  收藏  举报