TypeScript 观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它允许对象(称为“观察者”)订阅另一个对象(称为“主题”或“可观察对象”)的状态变化。当主题的状态发生变化时,所有订阅的观察者都会自动收到通知并更新。这种模式非常适合实现事件驱动的系统,例如用户界面更新、日志记录或数据同步。
观察者模式的核心概念
观察者模式的核心思想是将“观察者”与“主题”解耦。主题不需要知道观察者的具体实现,只需要维护一个观察者列表,并在状态变化时通知它们。这种设计使得系统更加灵活,易于扩展和维护。
观察者模式的组成部分
- 主题(Subject):维护一个观察者列表,并提供注册、移除和通知观察者的方法。
- 观察者(Observer):定义一个更新接口,用于接收主题的通知。
- 具体主题(Concrete Subject):实现主题的具体逻辑,并在状态变化时通知观察者。
- 具体观察者(Concrete Observer):实现观察者的更新逻辑,以响应主题的状态变化。
观察者模式的实现
下面是一个简单的TypeScript实现示例,展示如何使用观察者模式来实现一个天气站系统。
1. 定义观察者接口
首先,我们定义一个观察者接口 Observer
,它包含一个 update
方法,用于接收主题的通知。
interface Observer {
update(temperature: number, humidity: number, pressure: number): void;
}
2. 定义主题接口
接下来,我们定义一个主题接口 Subject
,它包含注册、移除和通知观察者的方法。
interface Subject {
registerObserver(observer: Observer): void;
removeObserver(observer: Observer): void;
notifyObservers(): void;
}
3. 实现具体主题
然后,我们实现一个具体主题 WeatherStation