본문 바로가기
Design Pattern

반복자 패턴 (Iterator Pattern)

by 밍상 2023. 10. 30.

반복자 패턴은

  • 컬렉션의 구현 방법을 노출하지 않으면서
  • 집합체 내의 모든 항목에 접근하는 항목을 제시합니다.

장점

  • 모든 항목에 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체가 맡게 된다.
  • 모든 집합체에서 쓸 수 있는 다형적 코드를 만들 수 있다.

 

유의점

  • 반복자에는 특별한 순서가 정해져 있지 않습니다.

Iterator

public interface Iterator {
    //수행할 항목이 있는지 여부 확인
    boolean hasNext();
    //다음 항목을 선택
    IteratorItem next();
}

 

Iterator

  • 자바의 모든 컬렉션 유형에서 Iterable 인터페이스를 구현합니다.
  • 어떤 클래스에서 Iterable을 구현하면 그 클래스는 iterator() 메소드를 구현합니다.
    그 메소드는 Iterator 인터페이스를 구현하는 반복자를 리턴합니다.
  • 배열은 자바 컬렉션이 아니라서 Iterable 인터페이스를 구현하지 않습니다.
  • 향상된 for문도 포함됩니다.
  • 이 인터페이스에는 forEach() 메소드가 기본으로 포함됩니다.
items.forEach(item -> System.out.println(item));

 

참고

에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠. 『헤드퍼스트 디자인패턴 개정판』. 한빛미디어, 2022