且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

java 观察者模式

更新时间:2022-09-15 16:31:55

IWatched:

java 观察者模式
/**
 * @author com.tiantian
 * @version 创建时间:2012-11-20 下午4:58:25
 */
public interface IWatched {
    public void addWatcher(IWatcher watcher);
    public void removeWatcher(IWatcher watcher);
    public void notifyWatchers(String msg);
}
java 观察者模式

IWatcher:

java 观察者模式
/**
 * @author com.tiantian
 * @version 创建时间:2012-11-20 下午4:55:23
 */
public interface IWatcher {
    public void update(String msg);
}
java 观察者模式

Watched:

java 观察者模式
/**
 * @author com.tiantian
 * @version 创建时间:2012-11-20 下午5:01:05
 */
public class Watched implements IWatched{
    private List<IWatcher> watchers = new ArrayList<IWatcher>();
    @Override
    public void addWatcher(IWatcher watcher) {
        watchers.add(watcher);
    }

    @Override
    public void removeWatcher(IWatcher watcher) {
        watchers.remove(watcher);
    }

    @Override
    public void notifyWatchers(String msg) {
        for(IWatcher watcher : watchers){
            watcher.update(msg);
        }
    }
}
java 观察者模式

Watcher:

java 观察者模式
/**
 * @author com.tiantian
 * @version 创建时间:2012-11-20 下午5:04:56
 */
public class Watcher implements IWatcher{

    @Override
    public void update(String msg) {
        System.out.println(msg);
    }
}
java 观察者模式

Test:

java 观察者模式
/**
 * @author com.tiantian
 * @version 创建时间:2012-11-20 下午5:05:26
 */
public class Test {
    public static void main(String[] args) {
        IWatched watched = new Watched();
        IWatcher watcher1 = new Watcher();
        IWatcher watcher2 = new Watcher();
        IWatcher watcher3 = new Watcher();
        watched.addWatcher(watcher1);
        watched.addWatcher(watcher2);
        watched.addWatcher(watcher3);
        watched.notifyWatchers("I have been clicked!");
        
        watched.removeWatcher(watcher1);
        watched.notifyWatchers("what's up");
    }
}
java 观察者模式
本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/archive/2012/11/20/2779371.html,如需转载请自行联系原作者