
获得徽章 14
- #每天一个知识点#
观察者模式:多个观察者观察同一个
// 定义观察者类
class Observer {
constructor(name) {
this.name = name;
}
update(message) {
console.log(`${this.name} 收到消息: ${message}`);
}
}
// 定义被观察者类
class Subject {
constructor() {
this.observers = [];
}
// 添加观察者
addObserver(observer) {
this.observers.push(observer);
}
// 移除观察者
removeObserver(observer) {
this.observers = this.observers.filter(obs => obs !== observer);
}
// 通知所有观察者
notify(message) {
this.observers.forEach(observer => observer.update(message));
}
}
// 使用示例
const subject = new Subject();
const observer1 = new Observer('观察者1');
const observer2 = new Observer('观察者2');
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notify('这是第一次通知');
subject.removeObserver(observer1);
subject.notify('这是第二次通知');展开等人赞过54