目的
ちゃんと勉強していなかったデザインパターンを学習したい。
TECHSCORE様のまとめ(何度か3日坊主に)を読み切りたい。
本日のページ
Iteratorパターンとは
- Listの各要素にアクセスする方法を提供するためのパターン
- 要素の捜査方法を与えるクラスをListとは独立させておく
サンプルケース
学校の先生で生徒の名簿を扱う
学校から支給されたStudentListクラスを自由に拡張して利用することができるものとする。
以下を先生に求める能力と定義する。
- 先生は、学校から与えられた名簿に自分の生徒を書き込むことができる
- 先生は、生徒の名前を名簿の記載順に呼ぶことができる
StudentList型の変更
StudentListを直接拡張すると、StudentListが急に変更になった際に、大きな影響を受ける。
Iteratorパターン
Iteratorパターンとは
- Iteratorパターンでは、何らかの集合体がAggregateインタフェースを実装する(Aggregateとは、集約を意味する単語)
- Aggregateインタフェースは、Iteratorインタフェースの実装クラスを返す
- Iteratorインタフェースでは、次の要素が存在するかしないかをboolean型で返すhasNext()メソッドと、次の要素を返すnext()メソッドを定義する。
サンプルケースの解決
集合体が変わっても、構造は影響を受けない。