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

      }

    }

  • 相关阅读:
    Badboy参数化
    Badboy运行脚本
    Badboy中创建Suite, test, step和Template
    美食
    Badboy录制模式
    美食
    BadBoy+JMeter来录制和运行Web测试脚本
    JMeter简介及使用JMeter来访问网站
    软件测试的艺术
    泗泾办小卡需要的材料
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2469515.html
Copyright © 2011-2022 走看看