Java언어로 배우는 디자인패턴 입문 정리 - 1. Iterator Pattern

양정훈·2021년 1월 28일
2
post-thumbnail

본 내용은 Java언어로 배우는 디자인패턴 입문(한빛미디어) 책을 보면서 정리한 내용입니다.

소개

  • 일반적인 여러 요소를 가지고 있는 객체를 순회 할 때, 보통 for문을 사용함.
  • 그러나 배열 등 개수가 정해져 있는 객체를 순회할 때는 전체 길이를 넘어가는지 신경써줘야 함.
  • 이러한 인덱스 사용의 위험성을 줄이기 위해서, for문 등의 반복문에서 i의 역할을 하는 객체를 만들어 순회를 추상화하고 일반화 시켜주는 패턴을 Iterator Pattern 이라고 함.

예제

  • 서가(BookShelf) 객체에 책(Book)들이 있는 예제.
  • BookShelf는 한 객체를 여러개 가질 수 있는 Aggregate 인터페이스를 구현
  • Aggregate 인터페이스는 field로 Iterator를 가지고 있음.
  • Iterator는 인터페이스로, 해당 인터페이스를 구현하면 hasNext() 메서드와 next() 메서드를 구현해야 함.
  • hasNext()는 Aggregate 구현체의 구성요소를 더 순회할 수 있는지에 대해서 boolean 값을 반환함.
  • next()는 Aggregate 구현체가 가지고 있는 다음 요소를 반환하는 메서드.

Iterator Pattern의 UML

  • 위의 UML에서 구체적인 예시의 Iterator Pattern을 확인 가능

정리

  • Iterator의 역할
    - 요소를 차례로 순회하는 인터페이스를 결정하는 역할을 함.
    - 다음요소가 존재하는지 아는 hasNext() 메서드와 다음요소를 반환하는 next() 메서드를 가짐.
  • Aggregate의 역할
    - Iterator를 가지며, Iterator 구현체를 생성하는 역할을 함.
  • ConcreteIterator의 역할
    - Iterator를 실제로 구현하는 구현체의 역할을 함.
    - ConcreteAggregate에 의해 생성됨.
  • ConcreteAggregate의 역할
    - Aggregate를 실제로 구현하는 구현체의 역할을 함.
    - ConcreteIterator를 생성하며, 포함하고 있다.
profile
꿈을 현실로 만드는 성장형 인간

0개의 댓글