Iterator 패턴

2026. 4. 17. 18:29·복습/소프트웨어디자인패턴

Iterator 패턴이란?

원소를 순서대로 하나씩 끄집어 내어 전체를 처리하는 패턴

for문에서의 변수 i의 기능을 추상화+일반화 했다고 보면 됨

== 순회(traverse)

 

예제

책장에 책을 넣은 후-> 순서대로 하나씩 다시 끄집어내어 책 이름을 표시하는 program

책꽃이가, 자신이 가지고 있는 책들을 순회할 iterator(반복자)를 생성해서 반환함

 

Iterable<E>

집합체를 나타내는 interface (java.lang)

iterator(): BookShelf에서 Iterator<E> 생성하기 위한 abstract method

 

Iterator<E>

처리반복자를 나타내는 interface (java.util)

 

Book

책을 나타내는 class

client program

 

BookShelf

책장을 나타내는 class

client program

Iterable<Book> interface를 구현함

books: Book의 배열(책장에 꽂혀있는 책리스트), private 선언자로 외부에서 변경 불가. 배열크기는 생성자 호출시 지정됨

iterator(): BookShelfIterator 생성

Iterator it = bookshelf.iterator();

+ 배열생성시 c++ 과 java의 차이

int n = 5;
int arr[n];   // c++ 불가, java 가능
int arr[5];   // c++,java 모두 가능

+배열생성시 메모리 구조

String, class 객체 등을 배열안에 넣을때는,

객체 자체를 배열에 넣는게 아니라, Heap에 생성된 배열의 주소를 저장함.(참조값,reference)

 

 

BookShelfIterator

책장을 순회하는 class

client program

Iterator<Book> interface를 구현함

BookShelf field: BookShelfIterator가 검색한 책장을 가리킴(생성자에서 BookShelf 객체를 넘겨받음)

 

Main

동작 테스트용 class

확장 for문은 내부적으로 Iterator를 사용하므로,

Iterable interface를 implement한 class만 사용할 수 있다.

for (Book book: bookShelf) { // 확장 for문에는 Iterable interface를 implement한 class만 가능
System.out.println(book.getName());
}

 

 

BookShelf의 iterator 메서드와 BookShelfIterator 생성자의 관계

  • 생성(Creation): BookShelf는 Iterable<Book> 인터페이스를 구현하며, iterator() 메서드를 통해 자신을 순회할 전용 반복자인 BookShelfIterator 객체를 생성하여 반환합니다.
  • 참조 전달(this): iterator() 메서드는 new BookShelfIterator(this)와 같이 this 키워드를 사용하여 자기 자신의 인스턴스를 생성자에 전달합니다.
  • 초기화: BookShelfIterator의 생성자는 전달받은 집합체(BookShelf)를 필드에 저장하여, 이후 hasNext()나 next() 메서드가 호출될 때 해당 집합체의 데이터에 접근할 수 있도록 준비합니다.

'복습 > 소프트웨어디자인패턴' 카테고리의 다른 글

Singleton 패턴  (0) 2026.04.17
Factory Method 패턴  (1) 2026.04.17
Template Method 패턴  (0) 2026.04.17
Adapter 패턴  (0) 2026.04.17
디자인패턴 (기초,uml)  (0) 2026.04.17
'복습/소프트웨어디자인패턴' 카테고리의 다른 글
  • Factory Method 패턴
  • Template Method 패턴
  • Adapter 패턴
  • 디자인패턴 (기초,uml)
hyeumm.dev
hyeumm.dev
말하는 감자입니다. 많이 응원해주세요..^^
  • hyeumm.dev
    천방지축 개발자 되기 프로젝트
    hyeumm.dev
  • 전체
    오늘
    어제
    • 아무개 (78)
      • 복습 (41)
        • 알고리즘 (3)
        • 소프트웨어디자인패턴 (8)
        • 네트워크 (3)
        • 자료구조 (1)
        • C++ (1)
        • 서구실 (6)
        • 멋쟁이사자처럼 (3)
        • SOPT (7)
        • 소분설 (6)
        • 운영체제 (3)
      • 회고 (2)
        • UMC (0)
      • 프로그래밍 (19)
        • 안드로이드 (15)
        • 백준 (0)
        • 파이썬 기초 (0)
        • kotlin in action (3)
        • 테스트 코드 (1)
      • 디자인 (7)
      • 기획 (3)
        • 서비스 리뷰 (1)
        • IT 알쓸신잡 (2)
      • 대외활동 (5)
        • 네이버 클라우드 캠프 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    4호선톤
    IT동아리
    국비교육
    KDT
    발대식
    네이버클라우드캠프
    네이버클라우드캠프서포터즈
    솝트
    서류
    ncamp서포터즈
    에이아이팜
    비트캠프강남
    네클캠
    멋쟁이사자처럼
    hyperclovax
    해커톤
    #네이버클라우드캠프
    네이버클라우드
    sopt
    PM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyeumm.dev
Iterator 패턴
상단으로

티스토리툴바