23,观察者模式 vs 发布-订阅模式

一,观察者模式,举例:你想入职某牛逼公司,在NB公司的HR那里留了电话,他们有岗位空缺了就会打电话给你。你们彼此都知道对方的存在。当然,先入职NB的不止你一个!
event会触发notify。同步

二,发布订阅者模式。是由观察者模式衍生而来。多了一个中间层


发布者和订阅者彼此不知道对方的存在。异步

三,两者的差别总结
观察者 VS 发布-订阅者

所以两者之间的差异在于

console.log("观察者模式 vs 发布-订阅者模式")
1,观察者模式,彼此知道对方。而订阅者不知道,他们通过中间渠道通信
2,观察者模式,组件是紧凑的。而订阅者模式中,组件松散耦合
3,观察者模式,事件触发同步。而订阅者模式中,消息队列异步
4,观察者模式,在单个应用中。而订阅者模式中,更像交叉应用模式

举例:加深印象
观察者模式:个体奶农和个人的关系。
奶农统计有多少人订了产品,
所以个人都有一个相同拿牛奶的方法。
奶农有新奶了就负责调用这个方法。
-----
发布-订阅模式:报社, 邮局和个人。
报纸的订阅和分发是由邮局来完成的。
报社只负责将报纸发送给邮局。

四,应用场景:
在「一对多」的场景下,发布者的某次更新只想通知它的部分订阅者?
在「多对一」或者「多对多」场景下。一个订阅者依赖于多个发布者,某个发布者更新后是否需要通知订阅者?还是等所有发布者都更新完毕再通知订阅者?
这些逻辑都可以放到EventChannel里。

所以,发布订阅者模式,适合更负责的业务逻辑中

你可能感兴趣的:(23,观察者模式 vs 发布-订阅模式)