[디자인 패턴 1]iterator 패턴

maru5mango·2022년 5월 8일
0

디자인패턴

목록 보기
1/4
  • iterator 패턴은 for문을 추상화 한 패턴으로 무언가를 반복하여 순서대로 처리하는 경우 사용된다.

장점

  • 하나씩 꺼내서 처리하는 과정을 구현과 분리할 수 있다.
  • 컬렉션 구현 방법을 노출시키지 않으면서 그 집합체 안에 있는 항목에 접근할 수 있게 해준다.

단점

  • 간단한 구현을 iterator 패턴으로 구현하면 지나치게 설계가 복잡해지는 경우가 있다.

구성

  • iterator(반복자) -> 요소를 순서대로 검색하는 인터페이스를 결정(hasNext, next)
  • Concretelterator(구체적인 반복자) -> iterator가 결정한 인터페이스를 구현하는 부분, 검색하기 위해 필요한 정보를 가지고 있어야 한다.
  • Aggregate(집합체) -> iterator 역할을 만드는 인터페이스를 결정한다.
  • ConcreteAggregate(구체적인 집합체) -> Aggregate역할이 결정한 인터페이스를 실제로 구현한다.

example

class Iterator {

  constructor(el) {
    this.index = 0;
    this.elements = el;
  }

  next() {
    const value = this.elements[this.index++];
    const done = this.hasNext();
    return {
      value,
      done,
    }
  
  }

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

export default Iterator;

참고자료

https://flowergeoji.me/javascript/javascript---iterator-pattern/

0개의 댓글