返回
TS 设计模式之观察者模式:童话世界里的神奇故事
前端
2023-11-20 06:52:43
在远方的童话世界里,住着一位名叫艾丽斯的公主。她天真烂漫,心地善良,深受国民爱戴。然而,艾丽斯有个烦恼,那就是她的城堡总是会莫名其妙地出现裂缝。
一天,魔法师梅林前来拜访。得知艾丽斯的烦恼后,梅林决定帮助她。他施展了一个咒语,让城堡上空出现了一群小鸟。每当城堡出现裂缝,小鸟们就会叽叽喳喳地叫起来,提醒艾丽斯修补。
就这样,艾丽斯再也不用担心城堡出现裂缝了。小鸟们就像她的观察者,时刻关注着城堡的状态,并及时发出警报。这种模式被称为观察者模式。
在软件开发中,观察者模式也是一种非常有用的设计模式。它可以实现对象之间的松耦合,提高代码的可维护性和可扩展性。在 TypeScript 中,我们可以使用观察者模式来实现事件监听、发布订阅和函数式编程等功能。
以下是一个简单的 TS 观察者模式代码示例:
class Subject {
private observers: Observer[] = [];
attach(observer: Observer) {
this.observers.push(observer);
}
detach(observer: Observer) {
this.observers = this.observers.filter((o) => o !== observer);
}
notify() {
this.observers.forEach((observer) => observer.update());
}
}
class Observer {
update() {
console.log("Observer notified");
}
}
const subject = new Subject();
const observer1 = new Observer();
const observer2 = new Observer();
subject.attach(observer1);
subject.attach(observer2);
subject.notify(); // 输出:Observer notified\nObserver notified
在这个例子中,Subject
类代表城堡,Observer
类代表小鸟。当 Subject
检测到变化时,它会通知其所有观察者,观察者随后会执行相应的操作。
观察者模式在 TS 中有广泛的应用,如:
- 事件监听: 监听 DOM 元素的事件,例如点击或鼠标移动。
- 发布订阅: 允许组件订阅事件并接收来自发布者的更新。
- 函数式编程: 创建可组合和重用的事件处理函数。
通过使用观察者模式,我们可以创建松耦合、可维护和可扩展的代码。它是一种在 TS 中非常强大的设计模式。