您的位置:首页 > 新闻 > 热点要闻 > 观察者模式

观察者模式

2025/3/13 20:22:44 来源:https://blog.csdn.net/m0_46543935/article/details/140643038  浏览:    关键词:观察者模式

发布订阅模式(Publish-Subscribe Pattern),也称为观察者模式,是一种常用的设计模式,用于对象之间的消息传递。在这个模式中,订阅者(Observer)注册到发布者(Subject),当发布者状态发生变化时,通知所有订阅者。

下面是一个 JavaScript 实现的发布订阅模式:

class PubSub {constructor() {this.subscribers = {};}// 订阅事件subscribe(event, callback) {if (!this.subscribers[event]) {this.subscribers[event] = [];}this.subscribers[event].push(callback);}// 取消订阅unsubscribe(event, callback) {if (!this.subscribers[event]) return;this.subscribers[event] = this.subscribers[event].filter(subscriber => subscriber !== callback);}// 发布事件publish(event, data) {if (!this.subscribers[event]) return;this.subscribers[event].forEach(callback => callback(data));}
}// 使用示例
const pubSub = new PubSub();function subscriber1(data) {console.log(`Subscriber 1 received data: ${data}`);
}function subscriber2(data) {console.log(`Subscriber 2 received data: ${data}`);
}// 订阅事件
pubSub.subscribe('event1', subscriber1);
pubSub.subscribe('event1', subscriber2);// 发布事件
pubSub.publish('event1', 'Hello World!');
// 输出:
// Subscriber 1 received data: Hello World!
// Subscriber 2 received data: Hello World!// 取消订阅
pubSub.unsubscribe('event1', subscriber2);// 发布事件
pubSub.publish('event1', 'Hello again!');
// 输出:
// Subscriber 1 received data: Hello again!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com