观察者模式 & 发布-订阅模式

本文探讨了观察者模式和发布订阅模式的相似之处与不同点。这两种模式都建立了一对多的关系,当一个对象状态改变时,所有相关对象都会得到通知。观察者模式中,目标直接调度观察者,可能导致代码冗余;而发布订阅模式通过调度中心实现解耦,提供更细粒度的控制,如权限管理和节流操作。
摘要由CSDN通过智能技术生成

两者都是一种设计模式~
一、观察者模式

  • 定义了对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。
  • 例如:当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报纸,报社就会发多少份报纸,报社和订报纸的客户就是上面文章开头所说的“一对多”的依赖关系。

二、发布-订阅模式

  • 是观察者模式的一个别称,但是经过时间的沉淀,已经独立于观察者模式,成为另外一种不同的设计模式。发布者不会将消息直接发送给订阅者,两者之间并不知道对方的存在,而是通过“调度中心”进行两者的连接。
  • 例如:你在微博上关注了A,同时其他很多人也关注了A,那么当A发布动态的时候,微博就会为你们推送这条动态。A就是发布者,你是订阅者,微博就是调度中心,你和A是没有直接的消息往来的,全是通过微博来协调的(你的关注,A的发布动态)。

相同点:

  • 一对多

不同点:

  • 观察者模式和发布订阅模式最大的区别就是发布订阅模式有个事件调度中心。
    • 观察者模式由具体目标调度,每个被订阅的目标里面都需要有对观察者的处理,这种处理方式比较直接粗暴,但是会造成代码的冗余。
    • 而发布订阅模式中统一由调度中心进行处理,订阅者和发布者互不干扰,消除了发布者和订阅者之间的依赖。这样一方面实现了解耦,还有就是可以实现更细粒度的一些控制。比如发布者发布了很多消息,但是不想所有的订阅者都接收到,就可以在调度中心做一些处理,类似于权限控制之类的。还可以做一些节流操作。
      在这里插入图片描述

借鉴:《浅谈发布订阅模式与观察者模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值