观察者模式
约 376 字大约 1 分钟
2025-02-17
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
算法实现
- 定义观察者接口:包含一个更新方法。
- 创建具体观察者:实现观察者接口,定义接收到通知时的行为。
- 定义主题接口:包含添加、删除和通知观察者的方法。
- 创建具体主题:实现主题接口,管理观察者列表,并在状态改变时通知它们。
// 被观察者
class Subject {
constructor() {
this.observers = []; // 已经订阅的观察者列表
}
// 订阅
addObserver(observer) {
this.observers.push(observer);
}
// 取消订阅
removeObserver(observer) {
const index = this.observers.indexOf(observer);
if (index > -1) {
this.observers.splice(index, 1);
}
}
// 通知
notify(message) {
this.observers.forEach((observer) => observer.received(message));
}
}
// 观察者
class Observer {
constructor(name) {
this.name = name;
}
received(message) {
console.log("The observer", this.name, "received data: ", message);
}
}
// 创建观察者实例
let observer1 = new Observer("john");
let observer2 = new Observer("alex");
// 创建被观察者实例
let subject = new Subject();
// 添加两个观察者
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notify("让我观察一下");
// 执行结果
// The observer john received data: 让我观察一下
// The observer alex received data: 让我观察一下
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于