2014年10月25日土曜日

開発環境

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本 (Eric Freeman 著、Elisabeth Freeman 著、Kathy Sierra 著、Bert Bates 著、佐藤 直生 監訳、木下 哲也 翻訳、有限会社 福龍興業 翻訳、オライリージャパン)の2章(Observerパターン: オブジェクトを事情通に)、エクササイズ, コードマグネット(p.69)を解いてみる。

その他参考書籍

エクササイズ, コードマグネット(p.69)

コード(BBEdit, Emacs)

Test.java

public class Test {
    public static void main(String[] args) {
        WeatherData weatherData = new WeatherData();
        ForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);

        weatherData.setMeasurements(27, 65, 30.4f);
        weatherData.setMeasurements(28, 70, 29.2f);
        weatherData.setMeasurements(26, 90, 29.2f);
    }
}

ForecastDisplay.java

import java.util.Observable;
import java.util.Observer;

public class ForecastDisplay implements Observer, DisplayElement {
    private float currentPressure = 29.92f;
    private float lastPressure;

    public ForecastDisplay(Observable observable) {
        observable.addObserver(this);
    }

    public void update(Observable observable, Object arg) {
        if (observable instanceof WeatherData) {
            WeatherData weatherData = (WeatherData)observable;
            lastPressure = currentPressure;
            currentPressure = weatherData.getPressure();
            display();
        }
    }
    
    public void display() {
        System.out.println("前の気圧:" + lastPressure +
                           ", 気圧:" + currentPressure);
    }
}

入出力結果(Terminal)

$ java Test
前の気圧:29.92, 気圧:30.4
前の気圧:30.4, 気圧:29.2
前の気圧:29.2, 気圧:29.2
$

0 コメント:

コメントを投稿