Java观察者模式
niuyongzhi 人气:01.观察者模式是什么
顾名思义,有两个对象,观察者和被观察者。当被观察者数据发生变化时,提醒观察者更新数据或状态。
2.如何实现
1)定义两个类,观察者和被观察者。
2)被观察者要维护一个集合,存放观察者对象。并且提供增删方法。
3)被观察者数据发生变化时,要调用观察者的方法,以便通知观察者更新数据或状态。
4)基于面向抽象原则,可以将观察者和被观察者中的方法提取接口中。
3.代码实现
1)观察者接口
/** * 抽象观察者接口 */ public interface Observer { /** * 抽象方法 */ public void uPdate(); public void remove(); }
2)被观察者接口
/** * 抽象被观察者 */ public interface Observed { public void addObserver(Observer observer); public void deleteObserver(Observer observer); public void notifyObservers(); }
3)观察者实现
/** * 观察者实现 */ public class ObserverImpl implements Observer { public ObserverImpl(){ } @Override public void uPdate() { System.out.println("update...."); } }
4)被观察者实现
/** * 观察者实现 */ public class ObserverImpl implements Observer { public ObserverImpl(){ } private Observed observed; public ObserverImpl(Observed observed){ this.observed = observed; observed.addObserver(this); } @Override public void uPdate() { System.out.println("观察者更新数据变化...."); } @Override public void remove() { if(observed!=null){ observed.deleteObserver(this); } } }
5)测试类
public class TestObserver { public static void main(String args []){ ObservedImpl subject = new ObservedImpl(); ObserverImpl observer1 = new ObserverImpl(subject); subject.notifyObservers(); } }
4.延伸拓展
在Android的代码中,有很多地方用到了观察者模式。
Android的广播机制,就是采用的观察者模式。
我们创建一个广播接收者,来接收系统广播。在Android源码中,其实就维护了一个接收者的集合,用于存放所有的广播接收者。
加载全部内容