Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C# イテレーターパターンを実装してみる

Posted at

はじめに

今回はイテレーターパターンを実装してみる。
ちなみにChatGPTにイテレーターパターンを訪ねるとこう返ってきた。

イテレーターパターン(Iterator Pattern)は、オブジェクトのコレクション内の要素に順番にアクセスするための方法を提供するデザインパターンです。このパターンは、コレクションの内部構造に依存せずに要素を反復処理するための共通のインターフェースを定義します。
イテレーターパターンの主な目的は、反復処理の詳細をコレクションから分離することです。これにより、コレクションの実装が変更されても、反復処理のクライアントコードに影響を与えることなく、反復処理の方法を変更できます。また、複数のクライアントが同時にコレクションを反復処理できるようにすることも可能です。

実装

今回はイテレーターパターンを使って、社員名簿を生年月日順、社員番号順に書き出すプログラムを実装してみた。
イメージはこう。

image.png

イテレーターはhasnext()とnext()を持ち、具象のクラスで生年月日順か職番順かによってそれぞれ中身の実装を行った。
以下は、生年月日順のConcrete Iterator
2023-05-31_15h23_41.png

Concrete AggregateのGetIteratorでは上記のインスタンスを生成して返すだけ。
image.png

これでmainで生年月日順のみコンソール出力コードを書いてみる
image.png
hasnext()で要素があるかないかを判定し、next()で取り出している。
同じように職番順も実装すると、mainでは切り替えができる。

終わり

ここまで、上記設計に基づき実装してきた。今回は、大まかな流れをかいつまんで実装箇所を記載した。
引き続きデザインパターンの実装を行っていくのでそちらも見ていただければと思います。
本記事も不十分な箇所があるので随時更新します。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?