
you are here
333
9
章
Iterator
パターンと
Composite
パターン
hasNext()
next()
<<interface>>
Iterator
すべてを整理する前に、現在の設計の鳥瞰図を見てみましょう。
イテレータは、アグリゲートの要素を段階的に処理
する方法を提供してくれます。ただしアグリゲート
の要素の走査をサポートするために、アグリゲート
が独自のインタフェースに多くのメソッドを追加す
る必要はありません。また、イテレータの実装をア
グリゲートの外に置くこともできます。つまり、反
復処理をカプセル化しているのです。
PancakeHouseMenu
と
DinerMenu
は、新
しい
createIterator()
メソッドを実装します。
このメソッドは、それぞれのメニュー項目実
装のイテレータを作成する役割を担います。
printMenu()
Waitress
createIterator()
PancakeHouseMenu
menu
Items
createIterator()
DinerMenu
menu
Items
hasNext()
next()
DinerMenuIterator
hasNext()
next()
PancakeHouseMenuIterator
現在の設計を見直す
2
つのメニューは全く同じ一連のメ
ソッドを実装していますが、同じ
インタフェースを実装しているわ
けではありません。これを修正し、
Waitress
が具象メニューに全く依存
しないようにします。
ここでは、共通
の
Iterator ...