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 Iterat...