接口回调案例二

2016-12-15  本文已影响0人  飞兔子

1: 谁是观察者?谁是被观察者? 回调方法是谁?谁回调的?

闹钟事件:

观察者是 User,  被观察者是 闹钟 ,  User接收闹钟响铃()  , 被观察者持有观察者的接口来回调的。

点击事件:

OnClickListener 子类是观察者,系统接受点击事件的机制, 重写的onclick是回调方法,系统回调的。

ListView: 

 自定义的adapter是观察者,被观察者是DataSetObservable,重写的getView()是回调方法,被观察者回回调。

2:观察者和被观察者如何联系的?

myAdapter extends SimpleAdapter //具体的观察者

listview.setAdapter(Adapter adapter)//把具体的观察者上下文环境注册到被观察者中,让被观察者持有观察者的引用。通过这个引用来进行回调。

被观察者内部拥有一个装有观察者实例对象的集合List<观察者接口>,(通过接口指向子类的引用)方便对观察者进行管理,遍历回调所有的观察者

3:什么时候要用到观察者模式呢?

(观察者模式扩展性好 方便管理观察者)

一个事件的触发会引起多个事件并行产生的时候,你就要考虑用这个小婊砸了。这样可以很方便的对这多个事件的订阅或者取消进行管理。

eg: 当触发京东支付这个事件,会引起 1 订单记录的产生 ,2 京东发货 , 3 短信消费反馈 ,

4:参考《android 源码设计模式解析与实战》  , android studio查看系统的源码。

上一篇 下一篇

猜你喜欢

热点阅读