23,观察者模式 vs 发布-订阅模式
2019-11-22 本文已影响0人
r8HZGEmq
一,观察者模式,举例:你想入职某牛逼公司,在NB公司的HR那里留了电话,他们有岗位空缺了就会打电话给你。你们彼此都知道对方的存在。当然,先入职NB的不止你一个!
event会触发notify。同步
发布者和订阅者彼此不知道对方的存在。异步
三,两者的差别总结
观察者 VS 发布-订阅者
二,发布订阅者模式。是由观察者模式衍生而来。多了一个中间层
发布者和订阅者彼此不知道对方的存在。异步
三,两者的差别总结
观察者 VS 发布-订阅者
所以两者之间的差异在于
console.log("观察者模式 vs 发布-订阅者模式")
1,观察者模式,彼此知道对方。而订阅者不知道,他们通过中间渠道通信
2,观察者模式,组件是紧凑的。而订阅者模式中,组件松散耦合
3,观察者模式,事件触发同步。而订阅者模式中,消息队列异步
4,观察者模式,在单个应用中。而订阅者模式中,更像交叉应用模式
举例:加深印象
观察者模式:个体奶农和个人的关系。
奶农统计有多少人订了产品,
所以个人都有一个相同拿牛奶的方法。
奶农有新奶了就负责调用这个方法。
-----
发布-订阅模式:报社, 邮局和个人。
报纸的订阅和分发是由邮局来完成的。
报社只负责将报纸发送给邮局。
四,应用场景:
在「一对多」的场景下,发布者的某次更新只想通知它的部分订阅者?
在「多对一」或者「多对多」场景下。一个订阅者依赖于多个发布者,某个发布者更新后是否需要通知订阅者?还是等所有发布者都更新完毕再通知订阅者?
这些逻辑都可以放到EventChannel里。
所以,发布订阅者模式,适合更负责的业务逻辑中