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 著、佐藤 直生 監訳、木下 哲也 翻訳、有限会社 福龍興業 翻訳、オライリージャパン)の7章(AdaptorパターンとFacadeパターン:適合可能にする)、エクササイズ(p.227)を解いてみる。
その他参考書籍
エクササイズ(p.227)
コード(BBEdit, Emacs)
DuckAdapter.java
public class DuckAdapter implements Turkey {
Duck duck;
int i;
public DuckAdapter(Duck duck) {
this.duck = duck;
i = 0;
}
public void gobble() {
this.duck.quack();
}
public void fly() {
if (i % 5 == 0) {
duck.fly();
}
if (i == 4) {
i = 0;
} else {
i += 1;
}
}
}
TurkeyTestDrive.java
public class TurkeyTestDrive {
public static void main(String[] args) {
WildTurkey turkey = new WildTurkey();
MallardDuck duck = new MallardDuck();
Turkey duckAdapter = new DuckAdapter(duck);
System.out.println("Duckの出力");
duck.quack();
duck.fly();
System.out.println("\nTurkeyの出力");
turkey.gobble();
turkey.fly();
System.out.println("\nDuckAdapterの出力");
duckAdapter.gobble();
for (int i = 0; i < 5; i++) {
duckAdapter.fly();
}
}
}
入出力結果(Terminal)
$ javac TurkeyTestDrive.java
$ java TurkeyTestDrive
Duckの出力
ガーガー
飛んでいます。
Turkeyの出力
ゴロゴロ
短い距離を飛んでいます。
DuckAdapterの出力
ガーガー
飛んでいます。
$
0 コメント:
コメントを投稿