Skip to content

观察者模式

观察者模式是一种行为设计模式,定义了对象之间的一对多依赖关系。

被观察者对象(Subject)维护一组观察者对象(Observer),当被观察者的状态发生变化时,它会自动通知所有的观察者对象。

主要角色:

  • Subject(被观察者):当状态发生变化时,会通知所有的观察者。
  • Observer(观察者):观察被观察者的变化,并做出相应的响应。
  • Subject => Observer
js
class Subject {
  constructor() {
    this.observers = []
  }

  addObserver(observer) {
    this.observers.push(observer)
  }

  removeObserver(observer) {
    this.observers = this.observers.filter(obs => obs !== observer)
  }

  notifyObservers(message) {
    this.observers.forEach(observer => observer.update(message))
  }
}

class Observer {
  update(message) {
    console.log(`Received message: ${message}`)
  }
}

// 使用观察者模式
const subject = new Subject()
const observer1 = new Observer()
const observer2 = new Observer()

subject.addObserver(observer1)
subject.addObserver(observer2)

subject.notifyObservers('Hello Observers')