1. 首页
  2. 考试认证
  3. 其它
  4. observer 观察者数据结构

observer 观察者数据结构

上传者: 2024-08-12 04:39:00上传 ZIP文件 1.45KB 热度 5次

观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,以便在对象状态改变时通知多个“观察”该对象的其他对象。在JavaScript中,这种模式常常用于事件处理状态管理,使代码更加模块化,降低耦合度。

在JavaScript中,观察者模式通常通过事件监听触发来实现。当一个对象的状态发生改变时,它会触发一个事件,所有注册为该事件的监听者都会收到通知并执行相应的回调函数。这种模式的核心在于发布-订阅的概念,其中发布者是状态改变的对象,订阅者则是对状态改变感兴趣的其他对象。

SubjectObservable是观察者模式中的核心角色,它代表被观察的对象。这个角色负责维护一个观察者列表,并提供添加、删除观察者以及通知观察者的方法。在JavaScript中,可以使用数组来存储这些观察者(即监听器)。以下是一个简单的SubjectObservable的实现:


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(data) {

 this.observers.forEach((observer) => observer.update(data));

 }

}



// 观察者接口

class Observer {

 update(data) {}

}



// 具体的观察者实例

class ConcreteObserver extends Observer {

 update(data) {

 console.log(`观察者收到更新:${data}`); 

 }

}



// 使用示例

const subject = new Subject();

const observer1 = new ConcreteObserver();

const observer2 = new ConcreteObserver();

subject.addObserver(observer1);

subject.addObserver(observer2);

subject.notify('状态已更新');

在这个例子中,Subject类维护了一个observers数组,用来存储所有的Observer。当调用notify方法时,它会遍历这个数组并调用每个观察者的update方法,传递更新的数据。

如果你想了解更多关于JavaScript观察者模式的具体实现和应用场景,建议查看JavaScript设计模式之观察者模式发布者订阅者模式JavaScript设计模式之观察者模式发布订阅模式原理与实现方法示例。这些资源提供了更详细的示例和代码解释,有助于进一步理解观察者模式的实际应用。

下载地址
用户评论