
you are here
329
9
章
Iterator
パターンと
Composite
パターン
public class DinerMenu {
static final int MAX_ITEMS = 6;
int numberOfItems = 0;
MenuItem[] menuItems;
//
ここにコンストラクタが入ります
//
ここに
addItem
が入ります
public MenuItem[] getMenuItems() {
return menuItems;
}
public Iterator createIterator() {
return new DinerMenuIterator(menuItems);
}
//
ここに他のメニューメソッドが入ります
}
イテレータを使って
DinerMenu
を書き直す
これでイテレータが手に入りました。次にイテレータを
DinerMenu
に組み込
みます。そのためには、
DinerMenuIterator
を作成する
1
つのメソッドを追加し、
DinerMenuIterator
をクライアントに返すだけでいいのです。
もはや
getMenuItems()
メソッドは必要ありませ
ん。実際、このメソッドは内部実装を公開してしま
うので不要です!
これは
createIterator()
メソッドです。
このメソッドは、
menuItems
配列か
ら
DinerMenuIterator
を生成してク
ライアントに返します。
Iterator
インタフェースを返しています。 ...