Java设计模式<观察者模式>

Java设计模式<观察者模式>

意图

  • 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

场景

  • 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作
  • 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知

优点

  • 察者和被观察者是抽象耦合的
  • 建立一套触发机制

开发场景

应用一旦启动,系统要做一系列的后续操作

Demo

定义观察者

public interface Observer {

    public void update();
}


Tomcat


public class Tomcat {

    private boolean isStarted = false;

    private List observers = new ArrayList();

    public void attach(Observer observer){
        observers.add(observer);
    }

    public void notifyAllObservers(){
        for (Observer observer : observers) {
            observer.update();
        }
        observers.clear();
    }

    public boolean isStarted() {
        return isStarted;
    }

    public void setStarted(boolean started) {
        isStarted = started;
        if(isStarted)
            notifyAllObservers();
    }
}

测试类DemoMain

public class DemoMain {
    public static void main(String[] args) {
        Tomcat tomcat = new Tomcat();
        tomcat.attach(new Observer() {
            public void update() {
                System.err.println("post a request to baidu.com");
            }
        });

        tomcat.attach(new Observer() {
            public void update() {
                System.err.println("post a request to taobao.com");
            }
        });
        tomcat.setStarted(true);
     }
}

你可能感兴趣的:(Java设计模式<观察者模式>)