zoukankan      html  css  js  c++  java
  • Head First Design Patterns Observer Pattern

    The Observer Pattern defines a one-to-many dependency between objects so that when one

    object changes state, all of its dependents are notified and updated automatically.

    The Observer Pattern defines a one-to-many relatioship between objects.

    Design Principle

    • Strive for loosely coupled designs between objects that interact

    public interface Subject{

      public void registerObserver(Observer o);

      public void removeObserver(Observer o);

      public void notifyObservers();

    }

    public interface Observer{

      public void update(float temp, float humidity, float pressure);

    }

    public interface DisplayElement{

      public void display();

    }

    public class WeatherData implements Subject{

      private ArrayList observers;

      private float temperature;

      private float humidity;

      private float pressure;

      public WeatherData(){

      observers = new ArrayList();

      }

      public void registerObserver(Observer o){

        observers.add(o);

      }

      public void removeObserver(Observer o){

        int i = observers.indexOf(o);

        if(i>=0){

          observers.remove(i);

        }

      }

      public void notifyObservers(){

        for(int i = 0;i<observers.size();i++){

          Observer observer = (Observer)observers.get(i);

          observer.update(temperature, humidity, pressure);

        }

      }

      public void measurementsChanged(){

        notifyObservers();

      }

      public void setMeasurements(float temperature, float humidity, float pressure){

        this.temperature = temperature;

        this.humidity = humidity;

        this.pressure = pressure;

        measurementsChanged();

      }

    }

    public class CurrentConditionsDisplay implements Observer, DisplayElement{

      private float temperature;

      private float humidity;

      private Subject weatherData;

      public CurrentConditionsDisplay(Subject weatherData){

        this.weatherData = weatherData;

        weatherData.registerObserver(this);

      }

      public void update(float temperature, float humidity, float pressure){

        this.temperature = temperature;

        this.humidity = humidity;

        display();

      }

      public void display(){

        //do something

      }

    }

  • 相关阅读:
    JAVA第六次作业
    20194672自动生成四则运算题第一版报告
    20194672自动生成四则运算第一版报告
    第四次博客作业--结对项目
    第9次作业--接口及接口回调
    第8次作业--继承
    软件工程第三次作业——关于软件质量保障初探
    第7次作业——访问权限、对象使用
    第6次作业--static关键字、对象
    Java输出矩形的面积和周长
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2469515.html
Copyright © 2011-2022 走看看