디자인 패턴/행위 패턴
Iterator 패턴
언린이
2021. 10. 26. 10:06
Iterator 패턴은 접근 기능과 자료구조를 분리시켜서 객체화하는 패턴입니다. 즉, 서로 다른 구조를 가지고 있는 저장 객체에 동일한 인터페이스로 접근할 수 있도록 도와주는 패턴입니다.
구조
- Iterator
- 집합체의 요소들을 순서대로 검색하기 위한 인터페이스를 정의합니다.
- ConcreteIterator
- Iterator 인터페이스를 구현합니다.
- Aggregate
- 여러 요소들로 이루어져 있는 집합체입니다.
- ConcreteAggregate
- Aggregate 인터페이스를 구현합니다.
활용 상황
- 정의한 방법과 다른 방법으로 요소들을 순회하고자 할때 유용합니다.
- 동일한 리스트에 대해서 하나 이상의 순회방법을 정의하고 싶을때 유용합니다.
- 객체 내부 표현 방식을 모르고도 집합체의 요소에 접근하고 싶을때 유용합니다.
- 집합체를 순회하는 다양한 방법을 지원하고 싶을때 유용합니다.
- 서로 다른 집합체 구조에서 동일한 방법으로 순회하고 싶을때 유용합니다.
Iterator 패턴의 장단점
- 장점
- 집합체의 다양한 순회 방법을 제공할 수 있습니다.
- 집합체에 따라 하나 이상의 순회 방법을 제공할 수 있습니다.
- 단점
- 순회 알고리즘 구현 부분에 따라서 캡슐화 전략을 위배할 수도 있습니다.
- 사용자가 직접 반복자를 삭제하는 책임을 가져야 합니다.