设计模式-观察者模式

  1. 定义
    观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新

  2. 说明
    观察者需要向主题注册,主题持有所有观察者的实例引用。

  3. 代码实例

    import java.util.Observable;
    import java.util.Observer;
    
    /**
     * 主题实现
     */
    class WeatherData extends Observable {
    
        private int num;
    
        public WeatherData() {
        }
    
        public void update() {
            setChanged();
            notifyObservers();
        }
    
        public void setNum(int num) {
            this.num = num;
            update();
        }
    
        public int getNum() {
            return num;
        }
    }
    
    /**
     * 观察者实现
     */
    class BlackBoard implements Observer {
    
        private int num;
    
        // 在构造器中向主题注册观察者
        public BlackBoard(Observable observable) {
            observable.addObserver(this);
        }
    
        @Override
        public void update(Observable o, Object arg) {
            this.num = ((WeatherData) o).getNum();
            System.out.println(toString());
        }
    
        @Override
        public String toString() {
            return "BlackBoard{" + "num=" + num + '}';
        }
    
        // 测试
        public static void main(String[] args) {
            WeatherData weatherData = new WeatherData();
            Observer observer1 = new BlackBoard(weatherData);
            Observer observer2 = new BlackBoard(weatherData);
    
            weatherData.setNum(10);
            weatherData.setNum(20);
        }
    }
    
posted @ 2019-08-15 17:12  bosslv  阅读(96)  评论(0编辑  收藏  举报