11월, 2014의 게시물 표시

Iterator Pattern

이미지
ref. GoF Design Pattern. Intent 내부 구조를 노출하지 않고 집합 객체의 element를 순차적으로 접근 할 수 있는 방법을 제공 Also Known As Cursor Motivation 집합 객체의 element에 대한 access와 순회에 대한 책임을 Iterator Object에 전가 Iterator class는 집합 객체의 element에 순차적으로 접근 할 수 있는 다음의 Interface를 정의 First() : current element를 첫번째 element로 초기화  Next() : current element를 다음 element로 변경  IsDone() : current element가 마지막 element 인지 확인  CurrentItem() : current element를 return  이러한 Iterator class를 다형성을 지원하도록 일반화  Aggregate : Iterator Object를 생성하기 위한 Interface를 정의  ConcreteAggregate : Aggregate를 Implement한 집합객체  Iterator : element를 접근하고 순회하기 위한 interface를 정의  ConcreteIterator : ConcreteAggregate에 대한 Iterator  Consequences 객체 내부의 표현 방식을 모르고도 객체의 각 요소를 순회  집합 객체를 순회하는 다양한 방법을 제시  서로 다른 집합 객체 구조에 대해서도 동일한 방법으로 순회 가능  Implementation 누가 Iterator를 제어 하는지에 따라 다음의 두 가지 방식의 Iterator로 나뉨 External Iterator Client가 Iterator를 control. Internal Iterator보다 유연함  Ex)  C++ STL이나 java의 Iterator  C#의 IEnumerato