: 컬렉션의 요소들에 대해 구현 방법 노출 없이 접근하는 행동 디자인 패턴
Iterator 인터페이스 의존
hasNext(), next(), remove()와 같은 메소드를 사용해
반복 작업을 적용할 대상이 더 있는지 확인하고, 다음 객체를 리턴하고, 객체를 제거할 수 있음
→ 모든 종류의 객체 컬렉션에 반복자 구현 가능
<aside> 📰
ArrayList를 사용한 팬케이크 하우스
배열을 사용한 객체마을 식당
→ 합병!
</aside>
Iterator Interface
: 컬렉션 순회에 필요한 작업을 선언
ConcreteIterator (PancakeHouseMenuIterator, DinerMenuIterator)
: 특정 알고리즘을 구현, 각 메뉴 항목의 반복자를 만들어줌
Collection Interface (Menu)
: 반복자들을 가져오기 위한 메서드 선언
import java.util.Iterator;
public interface Menu {
public Iterator<MenuItem> createIterator();
}
ex) createIterator()
ConcreteCollection (PancakeHouseMenu, DinerMenu)
: 클라이언트가 요청할 때마다 특정 구상 반복자의 인스턴스 반환