Observable提供必要的信息.
Observer(Listener)则对Observer所提供的数据做自己感兴趣的处理 .
比如TimeSource提供时间这一数据,TimeSink可以获所得TimeSource提供的时间数据,有人可能要实现数字时钟,另外有人可能想使用所提供的时间实现一个提醒服务。还有人可能想启动每晚备份功能。简而言之,希望一个单一的TimeSource对象能够为多个TimeSink对象提供时间.
Observable与Observer关系,如果1 : 1则可以做成依赖关系, 如果1 : n 则在Observable 内保存一个Observer的集合。
当然也可以利用第三个类来建立这二者的关系.Tomcat的Session与SessionListener就是利用第三个类建立二者的关系.
Observer的推模型和拉模型 。
推模型是通过把数据传给 notify和update方法从而把数据从目标(subject)推给观察者(observer).
拉模型没有给notify和update方法传递任何数据,数据是在观察者对象收到更新消息后,查询被观察者对象得到的.
在数据量比较大时推模型更合适。
数据量比较小时拉模型比较合适.
Observer(Listener)则对Observer所提供的数据做自己感兴趣的处理 .
比如TimeSource提供时间这一数据,TimeSink可以获所得TimeSource提供的时间数据,有人可能要实现数字时钟,另外有人可能想使用所提供的时间实现一个提醒服务。还有人可能想启动每晚备份功能。简而言之,希望一个单一的TimeSource对象能够为多个TimeSink对象提供时间.
Observable与Observer关系,如果1 : 1则可以做成依赖关系, 如果1 : n 则在Observable 内保存一个Observer的集合。
当然也可以利用第三个类来建立这二者的关系.Tomcat的Session与SessionListener就是利用第三个类建立二者的关系.
Observer的推模型和拉模型 。
推模型是通过把数据传给 notify和update方法从而把数据从目标(subject)推给观察者(observer).
拉模型没有给notify和update方法传递任何数据,数据是在观察者对象收到更新消息后,查询被观察者对象得到的.
在数据量比较大时推模型更合适。
数据量比较小时拉模型比较合适.