ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Design Pattern] Iterator 반복자 패턴
    CS/Design Pattern 2023. 1. 29. 19:09

    https://www.youtube.com/watch?v=T3sXKtlr0Ow&list=PLe6NQuuFBu7FhPfxkjDd2cWnTy2y_w_jZ&index=2 

     

    Container / Aggregator: 동일한 형태의 데이터를 여러 개 지닌 것

    그 예시로는 Array, Linked List, Tree, Graph, Table(DBMS) 등이 있다.

     

    1. Iterator의 개념

    이 데이터들을 가져오는 방법은 Aggregator의 종류에 따라 모두 다르기 때문에 이를 통일된 방법으로 가져오도록 돕는 것이 Iterator pattern이다.

    다양한 형태의 Aggregator의 데이터에 접근할 때에 표준화 된 공통API.

    한편으로는 Aggregator의 자료구조를 노출하지 않아도(혹은 몰라도) 내부 데이터에 접근할 수 있는 방법인 것이다.

     

    2. for-each반복문과의 차이점

    Iterator는 마치 for-each처럼 데이터를 순차적으로 가져온다. 

    다만 for-each는 데이터를 수정할 수 없고, Iterator는 있다고 한다.

    그러나 Iterator는 항상 Iterator 타입 변수를 생성하고 초기화해야 하므로 for-each보다 코드가 길고 가독성이 떨어진다.

    따라서 데이터를 읽기만 한다면 for-each를 사용하는 것이 좋겠다.

    또 for-each는 모든 데이터를 탐색한다. 원하는 부분만 탐색할 수 없다.

     

    3. Iterator와 Iterable

    둘다 Aggregator의 데이터에 순차적으로 접근하는 객체이지만 차이점이 있다.

    Iterator가 Iterable에 속한다. 즉 Iterator는 Iterable이지만, Iterable은 Iterator가 아닐 수도 있다.(자바에서 Iterable 인터페이스에는 Iterator 추상메소드도 선언되어있다.)

    Iterator를 만드는 메서드를 제공하는 것이 Iterable(혹은 Aggregate)

     

    'CS > Design Pattern' 카테고리의 다른 글

    [Design Pattern] GoF 디자인 패턴 개념 간단 정리  (0) 2023.03.01
    [Design Pattern] 시작하기  (0) 2023.01.29
Designed by Tistory.