概念定义:
观察者<Observer>模式(有时又被称为发布-订阅<Publish/Subscribe>模式,定义了对象之间一对多依赖,
这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
在观察者模式中,全改变的是主题的状态,以及观察者的数目和类型,用这个模型,你可以改变依赖于
主题状态的对象,却不必改变主题,这就叫提前规则
理解:
程序设计中插件拓展式应用使用的一般是观察者模式,当主程序状态改变,主程序将改变通知每一个插件,
由插件自己决定响应与否,插件向主程序注册后,主程序利用插件提供的接口通知插件,这样可以让两者
之间运作正常,又同时具有松耦合的有点。
不足:
在观察者数量比较多的情况下,如果某个观察者(如观察者A)紧急需要知道观察者的某个状态的改变,
而主题状态还在一个个传递给观察者,这时对观察者A来说就会出现不理想状态,例如浏览器插件A正在
给客户播放视频,而浏览器每次收到数据都逐个插件询问,那么插件A就无法流畅播放视频,因而必须
观察者<Observer>模式(有时又被称为发布-订阅<Publish/Subscribe>模式,定义了对象之间一对多依赖,
这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
在观察者模式中,全改变的是主题的状态,以及观察者的数目和类型,用这个模型,你可以改变依赖于
主题状态的对象,却不必改变主题,这就叫提前规则
理解:
程序设计中插件拓展式应用使用的一般是观察者模式,当主程序状态改变,主程序将改变通知每一个插件,
由插件自己决定响应与否,插件向主程序注册后,主程序利用插件提供的接口通知插件,这样可以让两者
之间运作正常,又同时具有松耦合的有点。
不足:
在观察者数量比较多的情况下,如果某个观察者(如观察者A)紧急需要知道观察者的某个状态的改变,
而主题状态还在一个个传递给观察者,这时对观察者A来说就会出现不理想状态,例如浏览器插件A正在
给客户播放视频,而浏览器每次收到数据都逐个插件询问,那么插件A就无法流畅播放视频,因而必须
有针对的改良