Head Firstデザインパターン
頭とからだで覚えるデザインパターンの基本
(オライリージャパン)
Eric Freeman (著), Elisabeth Freeman (著)
Kathy Sierra (著) Bert Bates (著)
佐藤 直生 (監訳), 木下 哲也 (翻訳)
有限会社 福龍興業 (翻訳)
開発環境
- OS X Yosemite - Apple (OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Java (プログラミング言語)
- javac (コンパイラ)
- java (application launcher)
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 コメント:
コメントを投稿