Iterator Pattern

개념
- 무엇인가가 많이 모여 있는 것 중에서 하나씩 끄집어내어 열거하면서 전체를 검색하면서 처리하는 패턴

I. 의도

     복합 객체 요소들의 내부 표현 방식을 공개하지 않고 순차적으로 접근할 수 있는 방법 제공

  정의: 무엇인가가 많이 모여 있는 것 중에서 하나씩 끄집어내어 열거하면서 전체를 검색하면서 처리하는 패턴
         컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리 할 수 있도록 한다.

II. 활용

     객체 내부 표현 방식을 몰라도 집합 객체의 각 요소를 순회할 수 있다

     집합 객체를 순회하는 다양한 방법을 제시할 수 있다

     서로 다른 집합 객체 구조에 대해서도 동일한 방법으로 순회할 수 있다

III. 결과

     iterator는 aggregate 클래스의 인터페이스를 단순화할 수 있다 – iterator 순회 인터페이스는 aggregate 클래스에 정의한 자신과 비슷한 인터페이스들을 없앰으로써 aggregate 인터페이스를 단순화할 수 있다

IV. 관련패턴

     iterator는 composite 패턴과 같이 재귀적 구조를 갖고 있는 경우 자주 사용한다. 다양한 iterator를 사용하고자 할 경우는 적당한 iterator의 서브클래스를 얻기 위해서 factory method를 사용한다. iterator는 반복한 결과를 저장하기 위해 memento를 사용한다

Iterator: 요소를 접근하고 순회하는데 필요한 인터페이스 제공.

  • ConcreteIterator: Iterator 에 정의된 인터페이스를 구현하는 클래스로서 순회 과정 중에 집합 객체 내의 현재 위치를 기억한다.
  • Aggregate: Iterator 객체를 생성하는 인터페이스를 정의
  • ConcreteAggregate: 해당하는 ConcreteIterator 의 인스턴스를 반환하도록 Iterator 생성 인터페이스를 구현한다.

 

 

 

댓글