俺カスタムなイテレータ (1)
2008/08/29 22:13 - デザインパターン
オレ激萌えなデザインパターン、イレテータをオレ色に染めちゃう話に入ります。
イテレータとはどんな機能を提供するパターンなのか、備えるべきメソッドは何か、どんなアルゴリズムなのか、というようなことは、デザインパターン解説本なり、ここいらへんあたりなりをご参照ください。
仕様
実装に入る前にオレ仕様を固めます。
私の求める機能は、コレクションへのアクセス順序の制御です。
イテレータのアーキタイプでは正順のアクセスのみをサポートしていますが、それ以外の順序でアクセスもおこないたい、というのが切なる願い。
今回のコーディングでは、正順に加え、逆順とランダムアクセスを実装します。
コレクションへのアクセスは正順、逆順、乱順をサポートする。
コードするファイル
イテレータパターンは以下のふたつのクラスから成り立っています。
- オブジェクトを格納するクラス(コレクション)
- コレクションへアクセスするクラス(イテレータ)
ところで GoF デザインパターンではそれぞれに対し、インターフェイスを作っているようです。
ワタクシ的には今回コーディングするクラス以外に、コレクション機能を持ったクラスとイテレータ機能を持ったクラスを作ることはなさそうな気がしないでもない。
となるとインターフェイスはいちいち作らなくても構わないかなぁ、とも思いますが、とりあえず基本に則って、インターフェイスもコードしておきます。
つーワケで、オレ仕様イテレータパターンでコードするファイルは以下の4つになります。 それぞれ()内の名称にします。
- コレクションのクラス ( AqCollection )
- コレクションのインターフェイス ( ICollection )
- イテレータのクラス ( AqIterator )
- イテレータのインターフェイス ( IIterator )
続く。
シリーズ