2014年11月13日木曜日

開発環境

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 コメント:

コメントを投稿