Java观察者模式

观察者模式:一对多,一更新多跟着更新。
package zhgapp.ztd.com.rx_java.Test; /**  * 观察者接口  * Created by Administrator on 2016-12-26.  */ public interface Watcher { public void update(String str); }

 

package zhgapp.ztd.com.rx_java.Test;

/**
 * 被观察者接口
 * Created by Administrator on 2016-12-26.
 */
public interface Watched {
public void addWatcher(Watcher watcher);
public void removeWatcher(Watcher watcher);
public void notifyWatcher(String str);
}
package zhgapp.ztd.com.rx_java.Test;

/**
 * Created by Administrator on 2016-12-26.
 */
public class ConcreateWatcher implements Watcher {
@Override
public void update(String str) {
        System.out.println(str);
    }
}
package zhgapp.ztd.com.rx_java.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016-12-26.
 */
public class ConcreateWatched implements Watched{
private List list=new ArrayList<>();
@Override
public void addWatcher(Watcher watcher) {
list.add(watcher);
    }

@Override
public void removeWatcher(Watcher watcher) {
list.remove(watcher);
    }

@Override
public void notifyWatcher(String str) {
for(Watcher watcher:list){
              watcher.update(str);
          }
    }
}
测试类:
package zhgapp.ztd.com.rx_java.Test;

/**
 * Created by Administrator on 2016-12-26.
 */
public class Test {
public static void main(String[] args){
        Watched thief=new ConcreateWatched();
        Watcher w1=new ConcreateWatcher();
        Watcher w2=new ConcreateWatcher();
        Watcher w3=new ConcreateWatcher();

        thief.addWatcher(w1);
        thief.addWatcher(w2);
        thief.addWatcher(w3);

        thief.notifyWatcher("我要吃饭了!");
    }
}

(注)
         作者:天涯尽头无女友
         链接:http://www.imooc.com/article/80977

你可能感兴趣的:(设计模式,Java)