A Blackhole

Iterator Pattern

2018-05-20

Iterator Pattern

Iterator : accesses the elements of an object sequentially without exposing its underlying representation.

  • 특정 집합체의 요소들을 순서대로 접근해서 처리
  • for 문의 index 기능을 추상화
  • forwhile 대신 Iterator 를 만들어 사용하는걸까?

Iterator 패턴의 요소

  1. Iterator interface : 반복자, index를 가지고 있다.
  2. ConcreteIterator (implements Iterator)
  3. Aggregate interface : 집합체, Iterator를 생성하는 역할
  4. ConcreteAggregate (implements Aggregate)

UML

iterator-uml

Why we shold use Iterator?

  • Iterator 를 사용하면 ConcreteAggregate 구현에 의존하지 않고 loop를 사용할 수 있음.
  • Aggregate , Iterator Pair를 사용함으로써 iteration의 추상화가 가능.

확장

  • 뒤에서 시작해서 역방향으로 진행하도록 구현.
  • 양 방향을 진행하도록 next(), previous()를 구현.
  • 특정 index로 jump하도록 구현.

관련 패턴

  • Visitor : Iterator + 처리 로직 (돌아다니면서 하나씩 직접 처리)
  • Composite : 재귀 구조패턴이므로 Iterator 적용이 어려움.
  • Factory Method : Iterator 인스턴스를 Factory Method로 구현