聊聊Android中那些无处不在的回调(三)——回调与观察者模式
2013-07-01 09:35
253 查看
观察者模式的简单定义
观察者模式是一种设计模式,它定义了一种一对多的类之间的依赖关系。其中的“一”指的是被观察者T,“多”指的是观察者
S。当
T的数据或者说状态发生变化时,会通知观察者
S。从而
S就知道了
T的状态发生了变化,从而可以做出相应的处理。对
S来说,任何对
T有兴趣的
S都可以观察
T;对
T来说,任何对自己有兴趣的
S它都会通知。
类比看Android中的回调与观察者模式
还是以Android中的Button控件为例:Button控件对应观察者模式中的被观察者
T,而OnClickListener对应观察者
S。当Button的状态发生变化时,会通知观察者OnClickListener。
那么Button会通知哪些OnClickListener呢?
因为listener是通过setOnClickListener方法添加进来的,所以通过该方法把谁传进来了就通知谁。
而我们通常的做法是让Activity去实现OnClickListener接口然后将Activity传给setOnClickListener方法。所以说Activity就是被通知的那个观察者。
这样也是合情合理的,因为Activity的职责就是管理各种控件,对控件的状态要了如指掌。所以让Activity来做观察者是最合适不过的了。
不过文章开头也说了,不是观察者模式是一对多的关系么?是的,不过一对一也算是一对多的特例了。哈哈。但因为Android中控件只能有一个Activity来管理,所以观察者就只有一个。
话说回来,如果有多个观察者的话,就不是通过setOnClickListener方法来添加观察者了,而是通过addOnClickListener方法添加。
总结
可以说Android中很多时候回调就是通过观察者模式而实现的,不过多数时候只有一个观察者,多数时候这个观察者就是Activity,因为Activity是一个应用的总管。另外,其实Android中的观察者模式和回调其实属于面向对象中组合的概念,就是在不改变一个类的情况下去扩展这个类的功能,也可以理解为运行时的继承。
参考链接
Observer Design Pattern in Java相关文章推荐
- 聊聊Android中那些无处不在的回调
- Android监听——回调模式与观察者模式
- Android开发中无处不在的设计模式——观察者模式
- Android回调与观察者模式的实现原理
- 当观察者模式和回调机制遇上Android源码
- Android开发中无处不在的设计模式——观察者模式
- android 页面消息传递,观察者模式处理,打造纯粹的消息传递。
- android网络监控下的观察者模式运用
- OC与AS3的观察者模式比较以及外部回调
- Java设计模式补充:回调模式、事件监听器模式、观察者模式(转)
- Android 设计模式之观察者模式
- android观察者模式
- 一个类实现Android观察者模式(最简单实用的观察者模式)
- Android---观察者模式的简单实现demo
- android基础笔记——Observer观察者模式
- Android设计模式之观察者模式
- android观察者模式初学笔记
- Android中的观察者模式
- android设计模式的使用之观察者模式
- 观察者模式(Observer)在Android中的应用: