观察者模式与发布订阅模式

观察者模式

观察者和目标相互了解,知道彼此的存在。观察者订阅目标事件,目标发生变化后,调度观察者的更新方法。

 ╭─────────────╮  Fire Event  ╭──────────────╮
 │             │─────────────>│              │
 │   Subject   │              │   Observer   │
 │             │<─────────────│              │
 ╰─────────────╯  Subscribe   ╰──────────────╯

发布订阅模式

发布者和订阅者都要向注册中心注册,当发布者有新动向,就通知注册中心,由注册中心统一调度订阅者注册到注册中心的调度代码。

注册中心避免发布者和订阅者之间产生依赖关系

 ╭─────────────╮                 ╭───────────────╮   Fire Event   ╭──────────────╮
 │             │  Publish Event  │               │───────────────>│              │
 │  Publisher  │────────────────>│ Event Channel │                │  Subscriber  │
 │             │                 │               │<───────────────│              │
 ╰─────────────╯                 ╰───────────────╯    Subscribe   ╰──────────────╯

eg.微服务架构中SpringCloud的服务注册与发现组件,就是典型地使用了发布订阅模式,如图所示


  服务提供者和服务调用者都会向注册中心注册,服务提供者改变后,注册中心会通过Eureka Client告知服务调用者。

区别

    订阅发布模式有一个注册中心,用于调度,松散耦合,观察者模式,观察者和被观察者互相知晓,紧密耦合。紧密耦合的方式直接,扩展性较差,要求双方同时存在。松散耦合不直接产生依赖,更容易扩展 ,比前者复杂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值