はじめに
今回はイテレーターパターンを実装してみる。
ちなみにChatGPTにイテレーターパターンを訪ねるとこう返ってきた。
イテレーターパターン(Iterator Pattern)は、オブジェクトのコレクション内の要素に順番にアクセスするための方法を提供するデザインパターンです。このパターンは、コレクションの内部構造に依存せずに要素を反復処理するための共通のインターフェースを定義します。
イテレーターパターンの主な目的は、反復処理の詳細をコレクションから分離することです。これにより、コレクションの実装が変更されても、反復処理のクライアントコードに影響を与えることなく、反復処理の方法を変更できます。また、複数のクライアントが同時にコレクションを反復処理できるようにすることも可能です。
実装
今回はイテレーターパターンを使って、社員名簿を生年月日順、社員番号順に書き出すプログラムを実装してみた。
イメージはこう。
イテレーターはhasnext()とnext()を持ち、具象のクラスで生年月日順か職番順かによってそれぞれ中身の実装を行った。
以下は、生年月日順のConcrete Iterator
Concrete AggregateのGetIteratorでは上記のインスタンスを生成して返すだけ。
これでmainで生年月日順のみコンソール出力コードを書いてみる
hasnext()で要素があるかないかを判定し、next()で取り出している。
同じように職番順も実装すると、mainでは切り替えができる。
終わり
ここまで、上記設計に基づき実装してきた。今回は、大まかな流れをかいつまんで実装箇所を記載した。
引き続きデザインパターンの実装を行っていくのでそちらも見ていただければと思います。
本記事も不十分な箇所があるので随時更新します。