sungwony

[디자인패턴] Iterator 패턴 본문

development/디자인패턴

[디자인패턴] Iterator 패턴

일상이상삼상 2018. 7. 11. 17:46

Iterator 패턴



Aggregate 인터페이스

 

Iterator 인터페이스

 

Book 클래스
 

BookShelf 클래스
 

BookShelfIterator 클래스
 

Main 클래스



Iterator 패턴의 등장인물


 등장인물

역할 

 Iterator(반복자)

요소를 순서대로 검색해가는 인터페이스(API)를 결정한다. 예제에서는 Iterator 인터페이스가 그 역할을 하고, 

다음 요소가 존재하는지를 얻기 위한 hasNext 메소드와 다음 요소를 얻기 위한 next 메소드를 결정한다.

 ConcreteIterator

 (구체적 반복자)

Iterator가 결정한 인터페이스(API)를 실제로 구현한다. 예제에서는 BookShelfIterator 클래스가 이 역할을 수행한다. 

이 역할은 검색하기 위해 필요한 정보를 가지고 있어야 한다. 예제에서는 BookShelf의 인스턴스를 검색에 필요한 정보로 활용한다.

 Aggregate(집합체)

Iterator를 만들어내는 인터페이스(API)를 결정한다. 이 인터페이스는 반복자를 만들어내는 메소드이다. 예제에서는 Aggregate 인터페이스가 이 역할을 담당하며 iterator 메소드를 결정한다.

 ConcreteAggregate

 (구체적 집합체)

Aggregate 역할이 결정한 인터페이스(API)를 실제로 구현하는 일을 한다. 구체적인 Iterator 역할, 즉 ConcreteIterator 인스턴스를 생성한다. 예제에서는 BookShelf 클래스가 이 역할을 담당하며, iterator 메소드를 구현한다.