
출처: 에릭 감마 , 리처드 헬름 , 랄프 존슨 , 존 블리시디스. 『Gof의 디자인 패턴』. 김정아(역). 프로텍미디어, 2015.
[4일차] 반복자(Iterator)
행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴
타입스크립트로 설명하는 GoF 디자인 패턴의 행동 패턴 11일만에 끝내기 챌린지
반복자란?
내부 표현부를 노출하지 않고
어떤 집합 객체에 속한 원소들을 순차적으로
접근할 수 있는 방법을 제공합니다.
활용성
1) 객체 내부 표현 방식을 모르고도 집합 객체의 각 원소들에 접근하고 싶을 때
2) 집합 객체를 순회하는 다양한 방법을 지원하고 싶을 때
트리를 순회할 때 중위 순회 방식이나 전위 순회 방식등과 같은 순회 알고리즘을 바꿀 수 있다.
3) 서로 다른 집합 객체 구조에 대해서도 동일한 방법으로 순회하고 싶을 때
구조 및 구현
interface Aggregate {
createIterator(): IteratorInterface
}
interface IteratorInterface {
first(): void
next(): void
isDone(): boolean
currentItem(): unknown
}
class ConcreteAggregate implements Aggregate {
createIterator() {
return new ConcreteInterator()
}
}
class ConcreteInterator implements IteratorInterface {
private state: number[]
private index: number = 0
constructor () {
this.state = [0, 1, 2]
}
first() {
this.index = 0
}
next() {
this.index++
}
isDone() {
return this.index > this.state.length
}
currentItem() {
return this.state[this.index]
}
}
class Main {
constructor() {
const aggregate = new ConcreteAggregate()
const iterator = aggregate.createIterator()
while (!iterator.isDone()) {
const item = iterator.currentItem()
console.log(item)
iterator.next()
}
// 0 1 2
}
}
공식 기술블로그 링크
728x90
'프런트엔드 > 디자인 패턴' 카테고리의 다른 글
[6일차] 메멘토 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
---|---|
[5일차] 중재자 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
[3일차] 해석자 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
[2일차] 명령 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
[1일차] 책임연쇄 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |