观察者模式最常见的应用场景是:

事件消息通知系统。

当一个对象的状态发生变化时,所有依赖于它的对象都得到通知和更新。这时候,我们就可以使用观察者模式实现:

申请订阅号有费用吗_申请订阅号要多长时间_订阅号申请

被观察者(Subject) 负责维护一组观察者(Observers)订阅号申请营销引流,当Subject的状态发生变化时,通知所有观察者。

观察者(Observer) 注册到Subject中订阅号申请,并在Subject状态变化时得到通知。

申请订阅号要多长时间_订阅号申请_申请订阅号有费用吗

举个具体例子:

假设我们开发一个新闻订阅系统。NewsAgency是被观察者,维护一组订阅者。当有新新闻发布时,通知所有订阅者。

那么代码可以这样实现:

js
// 被观察者
class NewsAgency {
  constructor() {
    this.observers = [];  // 存放订阅者
  }
  
  // 注册订阅者
  subscribe(observer) {
    this.observers.push(observer);
  }
  
  // 移除订阅者
  unsubscribe(observer) {
    this.observers = this.observers.filter(o => o !== observer);
  }
  
  // 通知订阅者
  notifySubscribers() {
    for (let observer of this.observers) {
      observer.notify(this);  // 调用订阅者的notify方法
    }
  }
}
// 观察者
class Subscriber {
  constructor(name) {
    this.name = name;
  }
  
  notify(agency) {  // 获取通知
    console.log(`${this.name} received news update from ${agency.constructor.name}!`);
  }
}
// 使用
let sub1 = new Subscriber('User1'); 
let sub2 = new Subscriber('User2');
let agency = new NewsAgency();
// 注册订阅者
agency.subscribe(sub1);
agency.subscribe(sub2);
// 发布新新闻,通知订阅者
agency.notifySubscribers();

订阅号申请_申请订阅号要多长时间_申请订阅号有费用吗

输出:

User1 received news update from NewsAgency!

User2 received news update from NewsAgency!

这就是观察者模式的一个典型应用 – 事件消息订阅与通知系统。

除此之外,观察者模式也常应用于数据和UI绑定,以及各种事件监听处理机制。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注