首页 > 代码库 > 设计模式学习总结——观察者模式
设计模式学习总结——观察者模式
观察者模式将观察者(订阅)和被观察者(发布)分离,实现了代码的松耦合;且定义了一对多的依赖关系,让多个观察者同事监听一个被观察者,同时一个被观察者能通知多个观察者更新。
角色:
抽象主题(Subject):又叫抽象被观察者(Observable),定义一个接口可以增加和删除观察者对象。
抽象观察者(Observer):为所有的具体观察者定义一个借口,做更新操作。
具体主题(Concrete Subject):实现抽象主题接口,将所有的观察者对象的引用保存到一个列表中。当状态发生改变时,通知列表中的观察者。又称具体被观察者。
具体观察者(Concrete Observer):实现抽象观察者接口,每个具体观察者更具具体情况实现。
Android开发中,ContentObserver,setOnClickListener,以及自定义的接口(在Activity中Implements, 传入到异步任务,当任务完成后,调用接口函数刷新Activity页面)等都是观察者很好的例子。
而Java本身提供了对观察者模式的支持,java.util库中提供了如下两个类:
Observer接口,作为抽象观察者,只定义了一个接口方法update(),每个具体观察者单独实现。
Observable类,可以作为抽象被观察者或者具体被观察者,因为这个类而非接口,内部实现已经能满足具体被观察者的要求。当然也能继承并扩展此类。Observable类提供了两个重要方法:setChanged(),用于设置内部标志位,标示被观察者发生变化;notifyObservers(),用于调用列表中所有观察者的update()方法,观察者做更新操作。
参考资料:http://www.blogjava.net/supercrsky/articles/202544.html