2014年11月22日土曜日

開発環境

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本 (Eric Freeman 著、Elisabeth Freeman 著、Kathy Sierra 著、Bert Bates 著、佐藤 直生 監訳、木下 哲也 翻訳、有限会社 福龍興業 翻訳、オライリージャパン)の9章(IteratorパターンとCompositeパターン: 適切に管理されたコレクション)、自分で考えてみよう(p.268)を解いてみる。

その他参考書籍

コードマグネット(p.350)

コード(BBEdit, Emacs)

AlternatingDinerMenuIterator.java

import java.util.Iterator;
import java.util.Calendar;

public class AlternatingDinerMenuIterator implements Iterator {
    MenuItem[] items;
    int position;
    
    public AlternatingDinerMenuIterator(MenuItem[] items)
    {
        this.items = items;
        Calendar rightNow = Calendar.getInstance();
        position = rightNow.get(Calendar.DAY_OF_WEEK) % 2;
    }

    public Object next() {
        MenuItem menuItem = items[position];
        position += 2;
        return menuItem;
    }

    public boolean hasNext() {
        if (position >= items.length || items[position] == null) {
            return false;
        } else {
            return true;
        }
    }

    public void remove() {
        throw new UnsupportedOperationException
            ("交換対応食堂メニュイテレーターはremove()をサポートしていません");
    }
}

入出力結果(Terminal)

$ javac AlternatingDinerMenuIterator.java
$

0 コメント:

コメントを投稿