Gof 디자인패턴_반복자(Iterator) 패턴
by Gongdel
반복자(Iterator) 패턴
의도
내부 표현부를 노출하지 않고 어떤 집합 객체에 속한 원소들을 순차적으로 접근할 수 있는 방법을 제공
활용성
사용 목적
- 객체 내부 표현 방식을 모르고도 집합 객체의 각 원소들에 접근하고 싶을 때
- 집합 객체를 순회하는 다양한 방법을 지원하고 싶을 때
- 서로 다른 집합 객체 구조에 대해서도 동일한 방법으로 순회하고 싶을 때
구조
- Iterator
- 원소를 접근하고 순회하는 데 필요한 인터페이스를 제공한다.
- ConcreteIterator
- Iterator에 정의된 인터페이스를 구현하는 클래스로, 순회 과정 중 집합 객체 내에서 현재 위치를 기억한다.
- Aggregate
- Iterator 객체를 생성하는 인터페이스를 정의한다.
- ConcreteAggregate
- 해당하는 ConcreteIterator의 인스턴스를 반환하는 Iterator 생성 인터페이스를 구현한다.
협력 방법
ConcreteIterator는 집합 객체 내 현재 객체를 계속 추적하고 다음번 방문할 객체를 결정한다.
결과
Iterator 패턴의 주요 특징 세가지
- 집합 객체의 다양한 순회 방법을 제공한다.
- Iterator는 Aggregate 클래스의 인터페이스를 단순화한다.
- Iterator의 순회 인터페이스는 Aggregate 클래스에 정의한 자신과 비슷한 인터페이스들을 없애서 Aggregate 인터페이스를 단순화할 수 있다.
- 집합 객체에 따라 하나 이상의 순회 방법이 제공될 수 있다.
Subscribe via RSS