Computer Science

디자인 패턴 - 이터레이터 패턴

ds3hfj 2025. 4. 23. 10:01

이터레이터 패턴

이터레이터(iterator)를 사용하여 컬렉션(collection) 요소들에 접근하는 디자인 패턴

이를 통해 순회할 수 있는 여러 가지 자료형의 구조와는 상관없이 이터레이터라는 하나의 인터페이스로 순회 가능

 

 

자바스크립트에서의 이터레이터 패턴

const mp = new Map() 
mp.set('a', 1)
mp.set('b', 2)
mp.set('c', 3) 
const st = new Set() 
st.add(1)
st.add(2) 
st.add(3)
for (let a of mp) console.log(a) 
for (let a of st) console.log(a) 
/*
[ 'a', 1 ] 
[ 'b', 2 ] 
[ 'c', 3 ]
1
2
3 
*/

 

다른 자료구조인 set과 map이지만 같은 이터레이터 프로토콜을 순회하는 것을 볼 수 있음

 

이터레이터 프로토콜


이터러블한 객체들을 순회할 때 쓰이는 규칙

 

이터러블한 객체


반복 가능한 객체로 배열을 일반화한 객체

 

 

class Iterator {
  constructor(items) {
    this.items = items;
    this.index = 0;
  }

  hasNext() {
    return this.index < this.items.length;
  }

  next() {
    return this.items[this.index++];
  }
}

const myList = ["a", "b", "c"];
const it = new Iterator(myList);

while (it.hasNext()) {
  console.log(it.next());
}

이터레이터 패턴의 특징

 

  • 캡슐화 유지: 컬렉션의 내부 구조를 모르게 함 (예: 리스트든 해시맵이든 동일하게 순회) 
  • 다양한 반복 방식 구현 가능: 정방향, 역방향, 조건 기반 반복 등
  • 반복 로직을 컬렉션과 분리: 순회 로직을 반복자에 위임함

 

 

'Computer Science' 카테고리의 다른 글

디자인 패턴 - MVC 패턴  (0) 2025.04.24
디자인 패턴 - 노출모듈 패턴  (1) 2025.04.23
디자인 패턴 - 프록시 패턴  (0) 2025.04.22
디자인 패턴 - 옵저버 패턴  (0) 2025.04.22
디자인 패턴 - 팩토리 패턴  (0) 2025.04.22