【设计模式】发布订阅模式和观察者模式实现和区别

我总感觉这两个是一个东西,老是傻傻分不清楚,在写 vue 项目中的时候我们常用的还是发布订阅模式,比如使用事件总线 eventBus 就是发布订阅模式

发布-订阅模式(Pub-Sub Pattern)和观察者模式(Observer Pattern)是两种常见的软件设计模式,它们都涉及到对象间的通信和事件处理,但在实现方式和应用场景上有一些区别:

  1. 观察者模式

    • 在观察者模式中,有一个主题(Subject)和多个观察者(Observer)。主题维护着一个观察者列表,并提供方法用于注册和注销观察者,当主题状态发生变化时,它会通知所有的观察者。
    • 观察者模式通常是一对多的关系,一个主题可以有多个观察者,当主题状态改变时,所有观察者都会收到通知,并且采取相应的行动【调用观察者的update 方法】。
    • 直接的、点对点的通信,主题与观察者之间有直接的关联。
    • 手写一个观察者模式
  2. 发布-订阅模式

    • 在发布-订阅模式中,有一个发布者【emit】(Publisher)和多个订阅者【on】(Subscriber)。发布者和订阅者之间没有直接的联系,而是通过一个事件通道(Event Channel)进行通信。
    • 发布者将事件发布到事件通道中,订阅者可以通过订阅感兴趣的事件来接收通知。订阅者可以订阅多个不同的事件,并且可以随时取消订阅。
    • 手写一个发布订阅
相关推荐
Engineer邓祥浩1 小时前
设计模式学习(16) 23-14 命令模式
学习·设计模式·命令模式
Maddie_Mo2 小时前
智能体设计模式 第二章:路由模式
设计模式
一条闲鱼_mytube5 小时前
智能体设计模式(五)人机协同-知识检索RAG-智能体间通信
网络·人工智能·设计模式
小码过河.5 小时前
设计模式——建造者模式
单片机·设计模式·建造者模式
小码过河.7 小时前
设计模式——工厂方法模式
设计模式·工厂方法模式
把csdn当日记本的菜鸡7 小时前
Java设计模式简单入门
java·开发语言·设计模式
老蒋每日coding8 小时前
AI Agent 设计模式系列(十一)—— 目标设定和监控模式
人工智能·设计模式·langchain
蔺太微8 小时前
外观模式(Facade Pattern)
设计模式·外观模式
进击的小头8 小时前
C语言实现设计模式的核心基石
c语言·开发语言·设计模式
Engineer邓祥浩8 小时前
设计模式学习(15) 23-13 模版方法模式
java·学习·设计模式