자바스크립트 Iterator Pattern

2025. 4. 19. 09:25·Programing/javascript
반응형

Iterator Pattern(이터레이터 패턴) 은 컬렉션의 내부 구조를 노출하지 않고도 요소들을 순차적으로 접근할 수 있도록 해주는 행동 디자인 패턴입니다. 자바스크립트의 for...of, next(), Symbol.iterator 등이 이 패턴을 잘 보여줍니다.


🧱 Iterator Pattern이란?

Iterator Pattern은 객체의 내부 데이터를 순회하는 책임을 별도의 반복자(iterator) 객체로 분리합니다. 이로써 컬렉션의 구조가 변경되더라도 순회 방식은 일관되게 유지할 수 있습니다.

const collection = {
    items: [1, 2, 3],
    [Symbol.iterator]() {
        let index = 0;
        const items = this.items;
        return {
            next() {
                return index < items.length
                    ? { value: items[index++], done: false }
                    : { done: true };
            }
        };
    }
};

for (const item of collection) {
    console.log(item); // 1, 2, 3
}

✅ 장점

  1. 컬렉션 구조에 의존하지 않음: 내부 구조를 노출하지 않고도 순회 가능
  2. 다양한 컬렉션에서 일관된 인터페이스 제공
  3. 반복 로직 캡슐화: 반복 로직을 재사용하거나 유지보수 용이

❌ 단점

  1. 복잡도 증가: 간단한 순회에도 이터레이터 객체를 만들어야 할 수 있음
  2. 성능 오버헤드: 수많은 객체 생성 및 next 호출로 인한 비용
  3. 비동기 순회는 별도 구현 필요: async iterator를 따로 설계해야 함

🛠️ 실전 예시: 사용자 배열 순회

function createUserIterator(users) {
    let index = 0;
    return {
        next() {
            if (index < users.length) {
                return { value: users[index++], done: false };
            } else {
                return { done: true };
            }
        }
    };
}

const users = ["Alice", "Bob", "Charlie"];
const iterator = createUserIterator(users);

console.log(iterator.next().value); // Alice
console.log(iterator.next().value); // Bob
console.log(iterator.next().value); // Charlie
console.log(iterator.next().done);  // true

🧩 결론

Iterator Pattern은 데이터를 순차적으로 처리해야 하는 모든 상황에서 강력한 도구입니다. 특히 자바스크립트의 Symbol.iterator와 for...of 문법 덕분에 자연스럽게 이 패턴이 녹아들어 있어, 커스텀 반복 로직을 설계하거나 데이터를 균일하게 다루는 데 적합한 설계 방식으로 자리 잡고 있습니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 Flyweight Pattern  (1) 2025.04.19
자바스크립트 Bridge Pattern  (0) 2025.04.19
자바스크립트 Composite Pattern  (0) 2025.04.19
자바스크립트 Chain of Responsibility Pattern  (0) 2025.04.19
자바스크립트 State Pattern  (1) 2025.04.19
자바스크립트 Strategy Pattern  (0) 2025.04.19
자바스크립트 Command Pattern  (0) 2025.04.19
자바스크립트 Mediator Pattern  (0) 2025.04.19
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 Composite Pattern
  • 자바스크립트 Chain of Responsibility Pattern
  • 자바스크립트 State Pattern
  • 자바스크립트 Strategy Pattern
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (446) N
      • 금융 (61) N
      • Programing (271) N
        • Algorithm (30) N
        • API (2)
        • javascript (121)
        • CSS (6)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (36)
        • Book (17)
        • 제품 (1)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31) N
        • 회고 (2) N
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    iT's MY LiFE
    php
    Java
    SQL
    자바스크립트유틸
    사고 싶은 책
    IT블로그
    자바
    It
    IT·컴퓨터
    블로그
    IT 관련
    jsp
    읽고 싶은 책
    위시리스트
    JavaScript
    기초
    디자인패턴
    자바스크립트
    js패턴
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
자바스크립트 Iterator Pattern
상단으로

티스토리툴바