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

理解:

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

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


缺点:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值