跳至主要內容

观察者模式

wzCoding小于 1 分钟综合知识观察者模式

观察者模式

观察者模式是当被观察的对象在其状态发生变化时通知其他对象(称为“观察者”)。这种模式定义了对象间一种一对多的依赖关系,当被依赖的对象发生变化时,其他依赖的部分可以收到通知并执行相应操作。

具体实现

观察者模式代码实现:

// 定义Subject类,表示被观察的目标对象
class Subject {
   constructor() {

      //观察者集合
      this.observers = []
   }

   //添加观察者
   subscribe(observer) {
      this.observers.push(observer)
   }

   //移除观察者
   unsubscribe(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 {
   constructor(name) {
      this.name = name
   }

   //观察者类自身的更新方法,由被观察者调用
   update(data) {
      console.log(`${this.name} received data:`, data);
   }
}

// 使用
const subject = new Subject();

const observer1 = new Observer('Observer1');
const observer2 = new Observer('Observer2');

subject.subscribe(observer1);
subject.subscribe(observer2);

subject.notify('Hello World!'); 
// Observer1 received data: Hello World!
// Observer2 received data: Hello World!

subject.unsubscribe(observer1);

subject.notify('Second Message'); 
// Observer2 received data: Second Message