언린이 2021. 10. 26. 10:06

Iterator 패턴은 접근 기능과 자료구조를 분리시켜서 객체화하는 패턴입니다. 즉, 서로 다른 구조를 가지고 있는 저장 객체에 동일한 인터페이스로 접근할 수 있도록 도와주는 패턴입니다.

 

 

구조

  • Iterator
    • 집합체의 요소들을 순서대로 검색하기 위한 인터페이스를 정의합니다.
  • ConcreteIterator
    • Iterator 인터페이스를 구현합니다.
  • Aggregate
    • 여러 요소들로 이루어져 있는 집합체입니다.
  • ConcreteAggregate
    • Aggregate 인터페이스를 구현합니다.

 

 

활용 상황

  • 정의한 방법과 다른 방법으로 요소들을 순회하고자 할때 유용합니다.
  • 동일한 리스트에 대해서 하나 이상의 순회방법을 정의하고 싶을때 유용합니다.
  • 객체 내부 표현 방식을 모르고도 집합체의 요소에 접근하고 싶을때 유용합니다.
  • 집합체를 순회하는 다양한 방법을 지원하고 싶을때 유용합니다.
  • 서로 다른 집합체 구조에서 동일한 방법으로 순회하고 싶을때 유용합니다.

 

 

Iterator 패턴의 장단점

  • 장점
    • 집합체의 다양한 순회 방법을 제공할 수 있습니다.
    • 집합체에 따라 하나 이상의 순회 방법을 제공할 수 있습니다.
  • 단점
    • 순회 알고리즘 구현 부분에 따라서 캡슐화 전략을 위배할 수도 있습니다.
    • 사용자가 직접 반복자를 삭제하는 책임을 가져야 합니다.