* Iterator Pattern : Array, Vector, ArrayList, HashMap등 여러가지 자료구조들이 각각 구현 방법도 다르고
처리방식도 다르면 코드의 많은 부분을 수정해야 되는 상황이 생긴다. 예를 들어, Array와 HashMap으로 따로 구현된 소스를 합치려고 하는 경우 등에 사용한다. Iterator Pattern은 자료구조나 구현 방법에 상관없이 프로그래밍을 할 때 사용하는 DesignPattern이다.
-> Interface에 의존한다.
- 내부적인 구현방법을 노출하지 않고서 그 집합체 안에 들어있는 모든 항목에 일일이 접근할 수 있게
해주는 방법을 제공해 준다. (자료구조에 상관없이 iterator는 hasNect(), next()등의
method만으로 collection에서 값을 꺼낼 수 있다.)
- 장 점 : Iterator Pattern을 사용하면 모든 항목에 일일이 접근하는 작업을 collection객체가 아닌 반복
자 객체에서 맡게 된다. => 집합체 interface 및 구현이 간단해지고, 각자 중요한 일만 잘 처리할 수 있게 된다.
- Collection 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들 수 있기 때문에 Design에서 Iterator의 영향은 중요한 부분이라고 할 수 있다.
* Class는 한가지 역할만 맡도록 해야 한다.
* Hashtable은 반복자를 간접적으로 지원하는 몇 안되는 class 중 하나다. Hashtable은 iterator를 쓸 때 전체에 대한 반복자가 아닌, 값들에 대한 반복자를 return한다.
|
[ Class diagram ] |
|
* Iterator : 요소를 순서대로 검색해가는 interface 및 hasNext(), next() method를 정의한다. * ConcreteIterator : Iterator가 결정한 interface를 구현한다. * Aggregate : Iterator 역할을 만들어 내는 interface를 결정한다. * Concrete Aggregate : Aggregate 역할이 결정한 interface를 실제로 구현한다. |
'study' 카테고리의 다른 글
| DesignPatterns[ Iterator Pattern ] (0) | 2008/10/21 |
|---|---|
| Design Patterns[ 패턴 분류 ] (0) | 2008/10/21 |
| Design Patterns [ Proxy Pattern ] (0) | 2008/09/29 |
| Design Patterns [ Prototype Pattern ] (1) | 2008/09/05 |
| Design Patterns [ Singleton Pattern ] (0) | 2008/09/03 |



Prev