标签:
六、观察者模式
定义:一种对象对另一种对象存在某种依赖关系,当一个对象发生改变的时候,需要改变另一个对象的状态。
在设计一个系统的时候,经常会有这样一个需求,如果一个对象发生改变,需要改变另一个对象的数据。比如:android客户端的一个控件ListView,当数据发生改变的时候,我们需要通知对象,刷新当前控件。
观察者模式一般有以下四个角色:
观察者:作用是观察每个对象是否需要改变
被观察者:只是一个接口,观察者观察的接口
具体的被观察者:这个是观察者具体要观察的对象
说的比较抽象,具体我们看代码,这里以自定义事件的方法来描述:
public class View { private List<Listener> listeners = new ArrayList<>(); public void addListener(Listener listener){ listeners.add(listener); } public void removeListener(Listener listener){ listeners.remove(listener); } public void click(){ if(null != listeners && listeners.size() > 0){ for(Listener listener : listeners){ listener.onClick(); } } } }
public interface Listener { public void onClick(); }
public class Button implements Listener { @Override public void onClick() { System.out.println("点击了Button!"); } }
public class TextView implements Listener { @Override public void onClick() { System.out.println("点击了TextView!"); } }
public static void main(String[] args) { View view = new View(); view.addListener(new Button()); view.addListener(new TextView()); view.click(); }测试类添加了两个被观察者:Button和TextView,调用click方法,则同时触发了Button和TextView:
点击了Button! 点击了TextView!
如果想自定义一个事件,使用观察者模式是一个不错的选择,android客户端的ListView的实现,其中就采用了观察者模式。
标签:
原文地址:http://blog.csdn.net/lynnlovemin/article/details/52159748