이터레이터 패턴이란?
- 컬렉션의 요소를 순차적으로 접근하거나 탐색하기 위한 디자인 패턴 중 하나이다.
- 컬렉션 내부 구조에 대한 세부 정보를 숨기고, 일관된 방법으로 요소에 접근할 수 있는 방법을 제공한다.
구성 요소
이터레이터(Iterator)
: 요소를 순차적으로 접근하거나 탐색하는 데 사용되는 인터페이스컬렉션(Collection)
: 요소의 집합을 나타내는 인터페이스이다.
장점
캡슐화
: 컬렉션의 내부 구조에 대한 세부 정보를 숨기고, 외부에 일관된 인터페이스를 제공한다.유연성
: 이터레이터를 통해 컬렉션의 요소에 접근할 수 있으므로, 컬렉션 내부 구조의 변경이 클라이언트 코드에 영향을 미치지 않습니다.
단점
추가적인 오버헤드
: 이터레이터를 생성하고 사용하는 데에는 약간의 오버헤드가 발생할 수 있다.
이는 간단한 순회에는 큰 영향을 미치지 않지만, 요소가 많거나 반복이 빈번한 경우에는 고려해야 한다.
구현 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package exam;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorPatternExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
Iterator<String> iterator = list.iterator(); // 이터레이터 패턴
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
}
}
마치며
- 컬렉션과 요소 간의 결합도를 낮추고, 클라이언트가 컬렉션의 요소에 일관된 방법으로 접근할 수 있도록 한다.
- 이 패턴은 캡슐화와 유연성을 제공하여 코드의 유지보수성을 향상시킨다.