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

这两天面试问到了这个问题,下来就重点学习了一下
1.观察者模式: 在软件设计中是一个对象,维护一个依赖列表,当任何状态发生改变自动通知它们。
举个例子:
假设我正在找一份软件工程师的工作,对“XX公司”很感兴趣。所以我就联系了他们的HR,给了他我的联系电话。他保证如果有任何职位空缺都会通知你。这里还有几个候选人也你一样很感兴趣。所以职位空缺大家都会知道,如果你回应了他们的通知,他们就会联系你面试。
所以,以上和“观察者模式”有什么关系呢?这里的“香蕉公司”就是 Subject ,用来维护 Observers (和你一样的候选人),为某些 event (比如职位空缺)来 通知(notify) 观察者。

2.发布/订阅模式: 订阅者把自己想订阅的事件注册到调度中心,当该事件触发时候,发布者发布该事件到调度中心(顺带上下文),由调度中心统一调度订阅者注册到调度中心的处理代码。

总结
1. 从两张图片可以看到,最大的区别是调度的地方。
虽然两种模式都存在订阅者和发布者(具体观察者可认为是订阅者、具体目标可认为是发布者),但是 观察者模式 是由具体目标调度的,而 发布/订阅模式 是统一由调度中心调的,所以 观察者模式的订阅者与发布者之间是存在依赖的,而发布/订阅模式则不会。
2.在 观察者 模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。然而,在 发布订阅 模式中,发布者和订阅者
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值