观察者模式
观察者模式: 一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。
例如: 儿子告诉老妈:“一会儿饭做好,我回来吃饭”
上面问题概述起来,适用观察者模式有几个要素:被观察者(老妈)、观察者(儿子)、事件(老妈是否做好饭)和由被观察者维护的观察者列表(老妈知道要回家吃饭的是谁)。
- 在观察者模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。
- 观察者模式大多数时候是同步的,比如当事件触发,Subject就会去调用观察者的方法。
发布/订阅者模式
发布-订阅者模式: 相比在观察者模式中,发布者和订阅者之间多了一个发布通道;一方面从发布者接收事件,另一方面向订阅者发布事件;订阅者需要从事件通道订阅事件,解决了主体对象与观察者之间功能的耦合, 以此避免发布者和订阅者之间产生依赖关系。
例如: 微信公众号
订阅者: 只需要订阅(关注)微信公众号
发布者(公众号): 发布新文章的时候,推送给所有的订阅者
- 解耦合
- 订阅者不用每次都去查看公众号是否有新的文章
- 发布者不需要谁订阅了它,只要给订阅者推送