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查看系统的源码。
网友评论