Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • S048-观察者模式

S048-观察者模式

观察者模式

// 被观察者
class Subject {
    constructor() {
        this.state = "happy"
        this.observers = [];
    }
    // 新增观察者
    add(o) {
        this.observers.push(o);
    }
    getState() {
        return this.state;
    }
    setState(newState) {
        this.state = newState;
        this.notify();
    }
    notify() {
        this.observers.forEach(o => o.update(this));
    }
}

    class Observer {
        constructor(name) {
            this.name = name;
        }
        update(student) {
            console.log(`${this.name} is ${student.getState()}`);
        }
    }

    let student = new Subject();
    let parent = new Observer("parent");
    let teacher = new Observer("teacher");

    student.add(parent);
    student.add(teacher);

    student.setState("sad");
Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人