观察者模式

来源:互联网 发布:unity3d 离线下载 编辑:程序博客网 时间:2024/06/08 15:12

参考http://www.cnblogs.com/mengdd/archive/2013/02/07/2908929.html

观察者模式,顾名思义需要一个被观察者,一个观察者,当被观察者状态改变的时候,通知观察者,在Android 中的Button 在点击之后 点击之前 是物理触碰到杂七杂八 什么时候发生都不知道,但是对外有个回调接口 ,及时观察者模式的体现,当被观察者即button 点击的时候,通知观察者 做你要做的事情。
回调接口及 观察者模式的简单体现, 在Android 中适配器的notifyChange 刷新数据。及观察者模式的体现。一下代码简单模拟

public interface Watcher{    public void update(String str);}public interface Watched{    public void addWatcher(Watcher watcher);    public void removeWatcher(Watcher watcher);    public void notifyWatchers(String str);}public class ConcreteWatcher implements Watcher{    @Override    public void update(String str)    {        System.out.println(str);    }}public class ConcreteWatched implements Watched{    // 存放观察者    private List<Watcher> list = new ArrayList<Watcher>();    @Override    public void addWatcher(Watcher watcher)    {        list.add(watcher);    }    @Override    public void removeWatcher(Watcher watcher)    {        list.remove(watcher);    }    @Override    public void notifyWatchers(String str)    {        // 自动调用实际上是主题进行调用的        for (Watcher watcher : list)        {            watcher.update(str);        }    }}public class Test{    public static void main(String[] args)    {        Watched girl = new ConcreteWatched();        Watcher watcher1 = new ConcreteWatcher();        Watcher watcher2 = new ConcreteWatcher();        Watcher watcher3 = new ConcreteWatcher();        girl.addWatcher(watcher1);        girl.addWatcher(watcher2);        girl.addWatcher(watcher3);        girl.notifyWatchers("开心");    }}
0 0
原创粉丝点击