设计模式-观察者

观察者

察言观色、思考分析一直是人类认识客观事物的重要途径。观察行为通常是一种为了对目标状态变化做出及时响应而采取的监控及调查活动。观察者模式(Observer)可以针对被观察对象与观察者对象之间一对多的依赖关系建立起一种行为自动触发机制,当被观察对象状态发生变化时主动对外发起广播,以通知所有观察者做出响应。

观察者往往眼观六路,耳听八方,随时监控着被观察对象的一举一动。作为主动方的观察者对象必须与被观察对象建立依赖关系,以获得其最新动态,例如记者与新闻、摄影师与景物、护士与病人、股民与股市等,以股民盯盘为例。

对象属性是反映对象状态的重要特征。如图23-1所示,为了能在股市中获利,股民们时刻关注着股市的风吹草动,其正类似于捉摸不定的数据对象状态。为了实现状态即时同步的目的,对象间就得建立合适的依赖关系与通告机制,而不是像股民那样,每个人都必须持续监控股市动态,除此之外不做其他任何事情,所以如何设计对象间的交互方式决定着软件运行效率的高低。

1 观察者很忙

对于上面提到的股民盯盘的例子,我们发现观察者(股民)忙得不可开交,但大部分时间里都是在做无用功。当目标的状态在没有发生变化的情况下,观察者依旧在进行观察,交互效率非常低,这正类似于利用HTTP协议对服务器对象状态发起的轮询操作(Polling)。

由于HTTP无状态连接协议的特性,服务端无法主动推送(Push)消息给Web客户端,因此我们常常会用到轮询策略,也就是持续轮番询问服务端状态有无更新。然而当访问高峰期来临时,成千上万的客户端(观察者)轮询会让服务端(被观察者)不堪重负

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yitian_hm

您的支持是我最大鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值