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();
- }