이터레이터 패턴(Iterator)
디자인패턴 공부하기
  • JavaScript

이터레이터 패턴(Iterator)

iterator 패턴은 반복문 중에 for 문을 추상화 한 패턴이고, 어떠한 배열을 반복하여 처리하는 경우 사용된다.
구현부는 숨기면서 해당 배열 데이터에 접근할 수 있도록 해준다.

javascript 의 generator 의 동작방식을 생각해보면 비슷하다.

단점

간단한 배열에 대한 순회를 iterator패턴을 이용해 구현하면 설계가 지나치게 복잡해질 수 있다.

코드로 살펴보기

class Iterator {
  constructor(data) {
    this.index = 0;
    this.data = data;
  }
  
  next () {
    const value = this.data[this.index];
    this.index++;
    
    const done = !this.hasNext();
    return {
      value,
      done,
    }
  }
  
  hasNext() {
    return this.index < this.data.length;
  }
}

const iterator = new Iterator([1,2,3,4]);
iterator.next(); // { value: 1, done: true }
iterator.hasNext(); // true
iterator.next(); // { value: 2, done: true }
iterator.hasNext(); // true
iterator.next(); // { value: 3, done: true }
iterator.hasNext(); // true
iterator.next(); // { value: 4, done: true }
iterator.hasNext(); // false
iterator.next(); // { value: undefined, done: false }