iterator 패턴
집합체의 구성물 보여주기
iterator 패턴
iterate는 '반복하다'라는 뜻이고, iterator은 '반복자'라는 뜻이다.
즉 무엇인가 반복할 때 iterator 객체를 사용한다.
iterator 객체는 반복하는 데 필요한 첫 번째 요소를 가리키는 메서드,
다음 요소를 가리키는 메서드, 마지막 요소를 가리키는 메서드,
현재 포인터가 가리키고 있는 요소를 반환하는 메서드 등을 포함한다.
iterator 패턴은 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해
접근할 수 있도록 [그림 5-43]처럼 iterator 객체 속에 넣은 다음,
iterator 객체의 메서드를 이용해 자료구조를 활용할 수 있도록 해준다.
반복에 사용되는 자료구조에는 배열, 리스트, Set, Map 등 있다.
이들의 특징은 어떤 데이터의 집합체라는 것이다.
따라서 개별 원소로 여러 가지 작업을 하게 된다.
이때 데이터들의 집합체를 모두 동일한 인터페이스를 사용하여
조작할 수 있게 하면 데이터들의 집합체를 쉽게 사용할 수 있을 것이다.
이 역할을 하는 것이 iterator 패턴이다.
예를 들어 배열의 경우 for 문을 사용하여 변수 i 값을 하나씩 증가시켜 원소들의 값을 조작한다.
iterator 패턴은 바로 값을 1씩 증가시키는 변수 i의 역할을 한다.
즉 변수 i의 역할을 추상화해서 일반화한 것이 iterator 패턴이다.
따라서 iterator 패턴은 배열 등에서 원소를 순서대로 조작하면서 전체를 검색하는 역할을 담당한다.
[그림 5-44]에서 aggregate 인터페이스는
요소들이 나열되어 있는 집합체로서 iterator 메서드를 가지고 있고,
이 메서드는 집합체에 대응하는 iterator를 1개 작성한다.
또 이것을 사용해서 iterator 인터페이스를 실제로 구현한
클래스의 인스턴스(concreteIterator 클래스)를 1개 만들어 집합체를
하나씩 나열하고, 검색하고, 조사하게 된다.
또 concreteAggregate 클래스는 aggregate 역할이 정한 인터페이스를 실제로 구현한다.
데이터 구조 탐색
-데이터 구조에 따라 다름
-구성 데이터 분할 및 데이터 탐색 필요
-고유 한 데이터 탐색 방법 제공
자바의 컬렉션 API
-핵심 수집 인터페이스
- Collection 은 최상의 클래스임
자바 메소드
Sample
'개발 관련 정보 > 디자인패턴' 카테고리의 다른 글
14. Bridge 패턴 (0) | 2023.04.12 |
---|---|
13. Strategy 패턴 (0) | 2023.04.11 |
11.Builder 패턴 / Chain of Responsibility 패턴 (0) | 2023.04.04 |
10.composite 패턴 (0) | 2023.04.03 |
9.observer 패턴 (0) | 2023.03.29 |
댓글