【GoFデザインパターン】Iteratorパターン

Iteratorパターン

目的

[1] Collectionの要素に順番にアクセスする方法
[2] Collectionの構造を意識する必要はない

利点

[1] データ構造を隠蔽する

使いどころ

[1] 集合体を扱うクラスを、自分で作ったとき

実装方法

* オブジェクトの持つデータ構造を非公開にして、以下の2つのメソッドを公開する
[1] HasNext()
[2] Next()
* IIteratorインターフェイスが、「クライアント」と「集約オブジェクト」との仲介役
public interface IIterator
{
    bool HasNext();
    Object Next();
}

イメージ

    HasNext() : データありますか?
    ----------------------------->
    true      : データあります
    <-----------------------------

    Next()    : ちょーだい
    ----------------------------->
    Object    : どうぞ
    <-----------------------------