이터레이터 패턴이란?

반복자를 사용하여 컨테이너를 가로지르며 컨테이너의 요소들에 접근하는 디자인 패턴으로

컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해주는 방법을 제공해 준다.

구조

structure.png

  • Aggreate
    Iterator 객체를 생성하는 인터페이스
  • ConcreateAggreate
    Iterator를 제공하는 인터페이스의 구현체
  • Iterator
    원소를 순회 및 접근하는 인터페이스
  • ConcreateIterator
    Iterator의 구현체

왜 사용할까?

이터레이터 패턴을 사용할 경우

아래와 같은 특성이 생기게 되는데

  • 집합체의 응집도가 높아진다
  • 집합체 내부 구현을 숨길 수 있다.
  • 집합체 내부 정보를 알필요 없이, 집합체의 모든 항목에 접근할 수 있다.

이러한 특성으로 인해 아래와 같은 목적 등으로 사용한다.

  • 집합체의 내부 구현을 보여주지 않고 접근을 허용하고 싶을때.

  • 집약체에 다양한 탐색 방법이 필요한 경우.

  • 서로 다른 집합 구조에 대해서도 동일한 방법으로 접근하고 싶을 경우.


참고