본문 바로가기
카테고리 없음

Iterator 패턴 - JAVA 언어로 배우는 디자인 패턴 입문

by 보배곰 2023. 11. 26.

https://product.kyobobook.co.kr/detail/S000200311846

 

JAVA 언어로 배우는 디자인 패턴 입문: 쉽게 배우는 GoF의 23가지 디자인 패턴 | 유키 히로시 - 교보

JAVA 언어로 배우는 디자인 패턴 입문: 쉽게 배우는 GoF의 23가지 디자인 패턴 |

product.kyobobook.co.kr

 

Iterator 패턴 - 처리를 반복한다

 

Iterator 패턴은 반복의 기능을 추상화하여 일반화한 것을 디자인 패턴입니다.

'iterate' 는 반복하다를 의미합니다. 

 

예제 프로그램

책장(BookShelf) 안에 책(Book)을 넣고, 책 이름을 차례대로 표시하는 프로그램입니다.

 

예제 프로그램의 클래스 다이어그램

 

Iterable<E> 인터페이스는 처리를 반복할 대상을 나타냅니다.

Iterator<E> 인터페이스는 하나하나의 요소 처리를 반복하기 위한 것으로 루프 변수와 같은 역할을 합니다.

Book 클래스는 책을 나타내는 클래스입니다.

BookShelf 클래스는 책장을 나타내는 클래스로, 집합체로 다루기 위해 Iterable<Book> 인터페이스를 구현하고 있습니다. 또한 iterator 메소드를 오버라이드하여 구현하고 있습니다.

BookShelfIterator 클래스는 BookShelf  클래스의 검색을 실행하는 클래스입니다.

 

Iterator 패턴의 등장인물

  • Iterator(반복자) 역
    • 요소를 순서대로 검색하는 인터페이스(API)를 결정합니다. 예제 프로그램에서는 Iterator<E> 인터페이스.
  • ConcreteIterator(구체적인 반복자) 역
    • Iterator가 결정한 인터페이스(API)를 실제로 구현합니다. 예제 프로그램에서는 BookShelfIterator 클래스.
  • Aggrregate(집합체) 역
    • Iterator를 만들어 내는 인터페이스(API)를 결정합니다. 예제 프로그램에서는 Iterable<E> 인터페이스가 이 역할을 맡아서 iterator 메소드를 결정.
  • ConcreateAggregate(구체적인 집합체) 역
    • Aggregate 가 결정한 인터페이스(API)를 실제로 구현합니다. 예제 프로그램에서는 BookShelf 클래스가 이 역할을 맡아서 Iterator 메소드를 구현.

 

Iterator 패턴을 사용하는 이유

더보기

왜 번거롭게 Iterator 패턴을 사용할까요?

가장 큰 이유는 Iterator 패턴을 사용함으로써 구현과 분리하여 반복할 수 있기 때문입니다.

 

 

관련 패턴

  • Visitor 패턴
  • Composite 패턴
  • Factory Method 패턴

 

 

댓글