티스토리 뷰

반응형
Iterator Pattern - 디자인 패턴

참고서적 : Head First Design Pattern
소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html
 
패턴 정의 #10 - 이터레이터(iterator) Pattern
컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해주는 방법을 제공합니다.
 
반복적으로 처리해야 하는 것을 통합해 주는 패턴입니다.
배열, ArrayList, Hashtable등의 리스트 처리 방식이 모두 다릅니다.
이런 것을 iterator 패턴을 이용하면 동일한 방식으로 처리할 수 있습니다.
 
배열의 경우에는 직접 구현해 주어야 하지만, ArrayList나 Hashtable의 경우 java.util.Iterator를 이용하면 됩니다.
 
디자인 원칙
1. 클래스를 바꾸는 이유는 한 가지 뿐이어야 한다.
-> 클래스는 한가지 목적을 가지고 사용해야 한다는 의미입니다.
(두 가지 이상의 목적을 가지고 구현이 될 경우, 두 가지 이유 때문에 변경해야 하는 문제점도 발생할 수 있기 때문입니다.)
 
이터레이터 패턴은 일반적으로 많이 사용하기 때문에 클래스 다이어그램을 이해하는데 큰 어려움이 없을 것입니다.
iterator 인터페이스가 제공하는 hasNext(), next(), remove() 메소드를 유의해서 살펴보시기 바랍니다.


- Iterator 인터페이스에서는 모든 반복자에서 구현해야 하는 인터페이스를 제공하며
컬렉션에 들어있는 원소들에 돌아가면서 접근할 수 있게 해 주는 메소드들을 제공해야 합니다.
여기에서는 java.util.Iterator를 사용합니다.
자바에서는 기본으로 제공하는 Iterator 인터페이스를 사용하고 싶지 않다면 직접 인터페이스를 만들어서 써도 됩니다.
 
반응형
댓글
댓글쓰기 폼