观察者模式和发布/订阅模式的区别

发布订阅模式

大概很多人都和我一样,觉得发布订阅模式里的Publisher,就是观察者模式里的Subject,而Subscriber,就是Observer。Publisher变化时,就主动去通知Subscriber。

其实并不是。

在发布订阅模式里,发布者,并不会直接通知订阅者,换句话说,发布者和订阅者,彼此互不相识。

互不相识?那他们如何交流?

答案是,通过第三者,也就是在消息队列里面,我们常说的经纪人Broker。

发布者只需要告诉Broker,我要发的消息,topic是 AAA;

订阅者只需要告诉Broker,我要订阅topic是 AAA 的消息;

于是,当Broker收到发布者发过来的消息,并且topic是 AAA时,就会把消息推送给订阅了topic是AAA的订阅者。当然也有可能是订阅者自己过来拉取,看具体实现。

从表面上看

  • 观察者模式里,只有两个角色——观察者 +  被观察者
  • 发布订阅模式里面,却不仅仅只有发布者和订阅者两个角色,还有一个经常被我们忽略的——Broker(中介)

往更深层级讲:

  • 观察者和被观察者,是松耦合的关系
  • 发布者和订阅者,则完全不存在耦合

从使用层面上讲:

  • 观察者模式,多用于单个应用内部
  • 发布订阅模式,则更多的是一种跨应用的模式,比如我们常用的消息中间件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值