본문 바로가기
개발 관련 정보/디자인패턴

iterator 패턴

by MonoSoft 2023. 4. 6.
728x90
반응형

iterator 패턴

 

집합체의 구성물 보여주기

iterator 패턴

iterate는 '반복하다'라는 뜻이고, iterator은 '반복자'라는 뜻이다.

즉 무엇인가 반복할 때 iterator 객체를 사용한다.

 

iterator 객체는 반복하는 데 필요한 첫 번째 요소를 가리키는 메서드,

 

다음 요소를 가리키는 메서드, 마지막 요소를 가리키는 메서드,

현재 포인터가 가리키고 있는 요소를 반환하는 메서드 등을 포함한다.

 

iterator 패턴은 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해

접근할 수 있도록 [그림 5-43]처럼 iterator 객체 속에 넣은 다음,

iterator 객체의 메서드를 이용해 자료구조를 활용할 수 있도록 해준다.

 

그림 5-43 iterator 객체의 예

반복에 사용되는 자료구조에는 배열, 리스트, Set, Map 등 있다.

 

이들의 특징은 어떤 데이터의 집합체라는 것이다.

따라서 개별 원소로 여러 가지 작업을 하게 된다.

 

이때 데이터들의 집합체를 모두 동일한 인터페이스를 사용하여

조작할 수 있게 하면 데이터들의 집합체를 쉽게 사용할 수 있을 것이다.

 

이 역할을 하는 것이 iterator 패턴이다.

예를 들어 배열의 경우 for 문을 사용하여 변수 i 값을 하나씩 증가시켜 원소들의 값을 조작한다.

 

iterator 패턴은 바로 값을 1씩 증가시키는 변수 i의 역할을 한다.

즉 변수 i의 역할을 추상화해서 일반화한 것이 iterator 패턴이다.

 

따라서 iterator 패턴은 배열 등에서 원소를 순서대로 조작하면서 전체를 검색하는 역할을 담당한다.

 

[그림 5-44]에서 aggregate 인터페이스는

요소들이 나열되어 있는 집합체로서 iterator 메서드를 가지고 있고,

이 메서드는 집합체에 대응하는 iterator를 1개 작성한다.

또 이것을 사용해서 iterator 인터페이스를 실제로 구현한

클래스의 인스턴스(concreteIterator 클래스)를 1개 만들어 집합체를

하나씩 나열하고, 검색하고, 조사하게 된다.

 

또 concreteAggregate 클래스는 aggregate 역할이 정한 인터페이스를 실제로 구현한다.

그림 5-44 iterator 패턴

 

데이터 구조 탐색

-데이터 구조에 따라 다름

-구성 데이터 분할 및 데이터 탐색 필요

-고유 한 데이터 탐색 방법 제공

 

 

자바의 컬렉션 API

-핵심 수집 인터페이스       

- Collection 은 최상의 클래스임

 

 

자바 메소드

Sample





728x90
반응형

'개발 관련 정보 > 디자인패턴' 카테고리의 다른 글

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

댓글