设计模式(九)——Observer 模式

理解:

        观察者模式,刚接触的时候,感觉这是一个十分有创意的模式。能够采用这种 “订阅---发布”的方式去将对象解耦。考虑到某个对象的改变比如一个表格改变的同时,与之关联的各种图形界面或者分析数据都需要改变,而如果让表格去通知各个对象,违背了“一个对象,一个职责”的原则。于是,添加一个第三方,即作为存储数据的第三方。当表格的变动导致了数据的改变,存储数据的对象便能够通知各个应该改编的对象(观察者),使之做出相应的调整。并且,后续的需要监听该subject的observer可以很方便的通过向改subject注册,进行监听。

但是,这个方式当动作发生时,会不加区别的去通知每个观察者。这样,观察者可能会不得不获得一些多余的信息。解决这个问题有几种方案:1、使用策略模式,每个观察者都提供给subject自己的strategy对象,让subject测试是否应该向其发送通知。2、仅向observer发送简单的通知,让observer用pull的方式进行信息获取,而非仅仅将信息push给observer。


缺点:

  信息的不加选择的push,可能会导致本应该一系列状态完成后才做的操作,过于频繁的进行。影响了效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章