楽しいだけで十分です

デザインパターン Iterator

Iteratorパターンの勉強メモです。TypeScriptで実装したコード yinm/design-patterns-in-typescript

# Iteratorパターンとは
- 何かがたくさん集まっているときに、それを順番に指し示してスキャンしていく処理を行うためのもの

# 登場人物
- Iterator
  - 要素を順番にスキャンしていくインターフェース(API)を定める役
- ConcreteIterator
  - Iteratorが定めたインターフェース(API)を実装する役
  - スキャンするために必要な情報(ConcreteAggregateのインスタンスなど)を持っている必要がある
- Aggregate (集合体)
  - Iteratorを作り出すインターフェース(API)を定める役 (自分が持っている要素を順番にスキャンしてくる人」を作り出すメソッド)
- ConcreteAggregate
  - Aggregateが定めたインターフェース(API)を実装する役

# ポイント
- 実装と切り離して、数え上げを行える
  - ループ処理がConcreteAggregate役の実装に依存しないため
- AggregateとIteratorは対応関係になる (Concreteの同士も)
- 1つのConcreteAggregate役に対して、複数のConcreteIterator役を作ることができる (数え上げのバリエーションが作れる)
  - 数え上げの仕組みが、Aggregate役の外に置かれているため

参考

yinm

WRITTEN BY yinm

I'm a Frontend Engineer.