观察者模式
小于 1 分钟
观察者模式
观察者模式是当被观察的对象在其状态发生变化时通知其他对象(称为“观察者”)。这种模式定义了对象间一种一对多的依赖关系,当被依赖的对象发生变化时,其他依赖的部分可以收到通知并执行相应操作。
具体实现
观察者模式代码实现:
// 定义Subject类,表示被观察的目标对象
class Subject {
constructor() {
//观察者集合
this.observers = []
}
//添加观察者
subscribe(observer) {
this.observers.push(observer)
}
//移除观察者
unsubscribe(observer) {
const index = this.observers.indexOf(observer)
if (index > -1) {
this.observers.splice(index, 1)
}
}
//通知观察者
notify(data) {
this.observers.forEach(observer => observer.update(data))
}
}
//定义观察者类,表示进行观察的的对象
class Observer {
constructor(name) {
this.name = name
}
//观察者类自身的更新方法,由被观察者调用
update(data) {
console.log(`${this.name} received data:`, data);
}
}
// 使用
const subject = new Subject();
const observer1 = new Observer('Observer1');
const observer2 = new Observer('Observer2');
subject.subscribe(observer1);
subject.subscribe(observer2);
subject.notify('Hello World!');
// Observer1 received data: Hello World!
// Observer2 received data: Hello World!
subject.unsubscribe(observer1);
subject.notify('Second Message');
// Observer2 received data: Second Message