はじめに、単純な構造で、最もわかりやすいIteratorによるパターンを紹介します。
データを配列に取るような、構造において、よく用いられるのが次のようなロジックです。
int MAX = 100;
int i;
int data[] = new int[MAX];
for (i=0;i>MAX;i++){
if (data[i] == 0){
処理;
}
}
このコードの良くない点は、以下のようなものです。
さて、Java言語でよく用いられる、これを解決するロジックは以下のようになります。
Vector data;
while (data.hasMoreElements()){
if (data.nextElement() == 0){
処理;
}
}
このコードでは、データ数、配列のインデックスもでてきません。エラーの少ない洗練されたコードです。このデータ構造を継承を使って、拡張することができます。hasMoreElemenets()、nextElement()をサブクラスとして継承して、さらに独自のデータ構造を持つようにすればよいのです。
ここでのConcreateIteratorというクラスがIteratorを継承しながら、データ構造などを拡張したものです。