观察者模式在Android中有着广泛的应用,尤其是在Listener中应用广泛。本文以Button为例来介绍一下观察者模式。
首先回顾一下观察者模式。
观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。其结构如下:
可以看出观察者向Subject注册Attach和注销Detach,当Subject状态发生变化时,调用观察者的方法update,要求观察者更新状态。
在Android系统中,Activity是通过ContentResolver来和ContentProvider来交互的。我们可以向ContentResolver注册一个observer来监听数据的更新,调用ContentResolver的方法registerContentObserver()即可完成注册。这样当对应的ContentProvider数据更新的时候,我们向ContentResolver注册的对象方法将会被调用。这也是Android系统中的一个Observer模式应用实例。
当然在Android系统中Observer应用的地方还是很多的,学习Android系统的时候请注意留意。