読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

1.Iterator 1つ1つ数え上げる

配列、集合など要素の集まり(コンテナ)を走査するための仕組みを提供するパターン。

f:id:p-monster:20121217202956p:plain

Iterator・・・要素を1つずつ走査するためのAPI
ConcreteIterator・・・Iteratorの実装
Aggregate・・・Iteratorを作り出すAPI。コンテナを走査するためのIteratorを返すメソッドの宣言
ConcreteAggregate・・・Aggregateの実装

具体的なクラス名を使うと再利用がしにくくなる。そのため、デザインパターンでは抽象クラスやインターフェースを使ってプログラミングするという考え方がある。
Iteratorパターンが適用されているコンテナは内部の構造がどうであれ「要素を順番に取り出す」ことができる。インターフェースを利用すればどのConcreteIteratorで実装されているかを知る必要がない。

関連しているパターン

Visitor・・・コンテナの要素を渡り歩き、「処理」を適用していく。
Composite・・・再帰的な構造を持ったパターン。Iteratorを適用するのが難しい。
FactoryMethod・・・AggregateでIteratorを作る際にFactoryMethodが使われることがある。

参考:

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門