观察者模式(Observer)

定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

一对多的关系关联

主题是具有状态的对象,并且可以控制这些状态。有“一个”具有状态的主题,观察者使用这些状态,虽然这些状态不属于他们。

依赖如何产生

因为主题真正拥有数据的人,观察者是主题的依赖者,在数据变化时更新,这样比起让许多对象控制同一份数据来,可以得到更干净的OO设计。

设计思考

被观察者肯定不是一个,而且被观察者都有注册、注销、通知(所有的观察者更新数据)三个功能,那么被观察者可以抽出一个接口,同时被观察者一定要有记录注册信息的field;观察者一定要有一个可被被观察者调用的update方法,以便更新数据。

主要流程是现在先有一个被观察者(无论出报纸还是杂志或者其他),然后这个有一个观察者(人),当两者都具备之后,开始交互:

  • 观察者调用被观察者的注册方法
  • 被观察者自身数据改变时,会遍历自己内部记录的注册过的观察者的更新数据方法,通知观察者更新数据。
  1. 被观察者设计

  2. 观察者设计

Java内置的观察者模式

由于注册、注销、通知这3个方法逻辑基本一样,同样还有一个保存注册的观察者的field,所以Java就提供了一个类java.util.Observable;对于观察者提供了一个接口java.util.Observer;以供开发人员使用。

转载于:https://my.oschina.net/qingjing/blog/2962793

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值