본문 바로가기

STUDY

[디자인 패턴] Iterator 패턴

Iterator 패턴은 ?

 

Iterator는 자바에서 제공해주기도 한다.

그럼 Iterator는 무엇인가 ?

 

대부분의 자료구조는 Iterator를 사용할 수 있다. list, HashMap, Array 등등..

그 이유는

java.util 내에 있는 자료구조들은 collection을 상속받았고 collection은 또한 iterable을 상속 받았기 때문에 가능한 것이다.

Iterator 패턴은 무엇인가 ?

프로젝트를 수행하다보면 여러가지 자료구조를 다뤄야 할 때가 있다. 이때 다양한 자료구조를 사용한다는 것은 관리해야할 필요성이 있다는 것이다. 개발자로 하여금 좀 더 유지보수와 관리의 편의성을 높이기 위해서 사용하는 것이 iterator 패턴이라 말할 수 있다. 하지만 iterator 패턴은 하나의 패턴만을 사용하자고 말하는 것은 아니다.

iterator 패턴은 이렇다.

예를 들어 여러가지 자료구조가 존재한다. 그 여러가지 자료구조는 각각의 형태에 맞는 구현부를 작성을 해야한다. iterator 패턴을 사용하면 iterator를 사용하여 다양한 자료구조를 동일한 방식으로 검색 할 수 있다.

예를 들어보자.

카세트가 존재한다. 이 카세트는 CD, USB, 테이프가 사용 가능하다. 내가 모르는 사람이 CD, UBS, 테이프를 넣어뒀지만 그 내용이 어떻게 들어가있는지 몰라도 듣는 사람은 '뒤로가기',재생','일시정지','앞으로가기' 만 수행하여도 곡의 탐색이 가능하다는 말이다.

이 처럼 iterator 패턴은 내부에 자료구조의 형식이라든지 각각의 원소값의 형태가 어떠한 형식으로 담겨져 있는지 몰라도 상관없다. 단지 iterator의 hasNext(), next()만으로 가져올 수 있다.

물론 자바에서 제공하는 Iterator를 사용해도 된다.

하지만, iterator 기능을 정의해놓은 인터페이스를 각각의 자료구조 형태에 맞게 만들고 구현해서 사용해도 된다.

장점 ?

속사정은 몰라도 된다. 유지보수에 용이하다.