Android系统源代码中的观察者模式

            观察者模式
   观察者模式中存在两个主要对象,观察者对象和被观察者对象。
   在软件设计的过程中,总是存在这样的需求,当对象A的数据A发生变化时,我们需要动态的更新对象B的数据,观察者模式因为这个需求而产生。
   简单点说就是观察者对象监听被观察者对象,在被观察者对象中检查数据是否发生变化,如果数据发生变化就通知它的所有的观察者。在实际应用中我们以UI 和后台数据为例。
   当后台数据发生变化时,我们需要动态的更新UI。可以将UI设计为一个观察者,后台数据设计为一个被观察者。一个被观察者可以有多个观察者。

    观察者模式的类图如下图所示

            

   
   从图中可以看出,被观察者对象(DataSubject) 总是持有多个观察者对象(DataObserver),它们之间是一种聚合关系。从业务的角度讲他们是一种监听关系。被监听者是被观者者,监听者是观察者。
   在Android 中存在大量的这种监听者和被监听者,以Android4.X的Telephony 模块相关的数据监听为例子。
   在CommandsInterface 中存在大量的register***,unregister*** 这样的方法就表示CommandsInterface 的实现类 BaseCommands,就是一个大的被监听者。BaseCommands  的派生类 RIL,将对从Modem 获取的数据变化发送到所有监听 RIL 数据的监听者对象中去,如电话状态变化,SIM卡状态发生变化,信号量发生变化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值