1.观察者定义了一种一对多依赖关系,让多个观察者同时监听某个主题对象。这个主题对象在状态上发生变化时,会通知所有的观者对象,让他们自动更新自己。----这里的主题对象就是被观察者
2.代码模拟
抽象主题角色AbstractWatched.java
public interface AbstractWatched {
public void addWatcher(AbstractWatcher watcher);
public void removeWatcher(AbstractWatcher watcher);
public void removeAll();
public void fire();
}
具体主题角色ConcreteWatched.java
public class ConcreteWatched implements AbstractWatched {
private List<AbstractWatcher> watchers = new ArrayList<AbstractWatcher>();
@Override
public void addWatcher(AbstractWatcher watcher) {
watchers.add(watcher);
}
@Override
public void removeAll() {
watchers.clear();
}
@Override
public void removeWatcher(AbstractWatcher watcher) {
watchers.remove(watcher);
}
@Override
public void fire() {
for(AbstractWatcher watcher : watchers){
watcher.update();
}
}
}
抽象观察者角色
public interface AbstractWatcher {
public void update();
}
具体观者角色
public class ConcreteWatcher implements AbstractWatcher {
@Override
public void update() {
System.out.println("update.....");
}
}
测试代码:
public static void main(String[] args) {
//被观察者
AbstractWatched watched = new ConcreteWatched();
AbstractWatcher watcher1 = new ConcreteWatcher();
AbstractWatcher watcher2 = new ConcreteWatcher();
AbstractWatcher watcher3 = new ConcreteWatcher();
watched.addWatcher(watcher1);
watched.addWatcher(watcher2);
watched.addWatcher(watcher3);
watched.fire();
}