
you are here
327
9
章
Iterator
パターンと
Composite
パターン
Iterator
パターンとの出会い
この反復処理のカプセル化計画は、実際にうまくいきそうです。
そして、おそらくすでに察しがついていると思いますが、これは
Iterator
パターンと呼ばれるデザインパターンです。
Iterator
パターンについては、
Iterator
というインタフェースに依
存していることをまず知っておいてください。以下は考えられる
1
つの
Iterator
インタフェースです。
hasNext()
next()
<<interface>>
Iterator
hasNext()
メソッドは、
アグリゲート内に反復処
理を行う要素がさらにあ
るかどうか通知します。
next()
メソッドは、ア
グリゲート内の次のオブ
ジェクトを返します。
このインタフェースがあれば、あらゆる種類のオブジェクトコ
レクション用のイテレータを実装できます。配列、リスト、ハッ
シュテーブルなど、どんなオブジェクトコレクションも使えるの
です。
DinerMenu
で配列用のイテレータを実装したいとしたら、
こうなるでしょう。
DinerMenuIterator
は、
MenuItem
の配列に対する反
復処理方法を知っているイテ
レータの実装です。
hasNext()
next()
<<interface>>
Iterator
hasNext()
next()
DinerMenuIterator
次に、このイテレータを実装し、
DinerMenu
に組み込んでどのよ
うに動作するかを調べてみましょう。 ...