Iterator は、 振る舞いに関するデザインパターンの一つで、 複雑なデータ構造の内部の詳細を公開することなく、 順次横断的に探索することを可能とします。
Iterator のおかげで、 クライアントは、 異なるコレクション上の要素の探索を、 単一のイテレーター・インターフェースを使用して同様の方法で行えます。
複雑度:
人気度:
使用例: このパターンは、 Java コードではよく見かけます。 多くのフレームワークやライブラリーがこれを使用してコレクション上の探索の標準的方法を提供します。
Java のコア・ライブラリーでの使用例です:
見つけ方: Iterator は、 next
や previous
などの操舵用メソッドの存在から簡単に識別できます。 イテレーターを使ったクライアント・コードには、 探索対象のコレクションへの直接のアクセスがないかもしれません。
ソーシャル・ネットワークのプロフィール上のイテレーション
この例では、 Iterator パターンを使い、 クライアント・コードに通信の詳細を公開することなく、 リモートのソーシャル・ネットワーク上のプロフィールを探索します。
iterators
iterators/ProfileIterator.java: プロフィール・インターフェースを定義
iterators/FacebookIterator.java: Facebook プロフィール上のイテレーションを実装
iterators/LinkedInIterator.java: LinkedIn プロフィール上のイテレーションを実装
social_networks
social_networks/SocialNetwork.java: 共通ソーシャル・ネットワーク・インターフェースを定義
social_networks/Facebook.java: Facebook
social_networks/LinkedIn.java: LinkedIn
profile
profile/Profile.java: ソーシャル・プロフィール
spammer
spammer/SocialSpammer.java: メッセージ送信アプリ
Demo.java: クライアント・コード
OutputDemo.txt: 実行結果