82——java监听者模式

来源:互联网 发布:c#怎么连接数据库 编辑:程序博客网 时间:2024/06/08 08:53

1.代码结构如下图:
这里写图片描述

其中Watched.java是被监听者,也就是事件源的一个接口;Watcher.java是监听者的一个借口。 ConcreateWatched.java,是一个具体的被监听对象,ConcreateWatcher,是一个具体的监听者。Test.java是一个测试用例。

//Watched.javapackage com.lafang.observer;public interface Watched//被观察者{    public void addWatcher (Watcher watcher);    public void removeWatcher (Watcher watcher);    public void notifyWatcher (String str);}
//Watcher.javapackage com.lafang.observer;public interface Watcher{    public void update(String str);}
//ConcrateWatched.javapackage com.lafang.observer;import java.util.ArrayList;import java.util.List;public class ConcrateWatched implements Watched{    private List<Watcher> list = new ArrayList<Watcher>();    @Override    public void addWatcher(Watcher watcher)    {        // TODO Auto-generated method stub        list.add(watcher);    }    @Override    public void removeWatcher(Watcher watcher)    {        // TODO Auto-generated method stub        list.remove(watcher);    }    @Override    public void notifyWatcher(String str)    {        // TODO Auto-generated method stub        for(Watcher watcher : list)        {            watcher.update(str);        }    }}
//ConcrateWatcher.javapackage com.lafang.observer;public class ConcrateWatcher implements Watcher{    @Override    public void update(String str)    {        // TODO Auto-generated method stub        System.out.println(str);    }}
//Test.javapackage com.lafang.observer;public class Test{    public static void main(String[] args)    {        Watched girl = new ConcrateWatched();//相当于按钮        Watcher watcher1 = new ConcrateWatcher();        Watcher watcher2 = new ConcrateWatcher();        Watcher watcher3 = new ConcrateWatcher();//相当于监听器        girl.addWatcher(watcher1);        girl.addWatcher(watcher2);        girl.addWatcher(watcher3);        girl.notifyWatcher("Happy");        girl.removeWatcher(watcher2);        girl.notifyWatcher("sad");    }}
0 0