Bin's Blog

오늘의 CS(디자인 패턴 - 이터레이터 패턴) 본문

CS

오늘의 CS(디자인 패턴 - 이터레이터 패턴)

hotIce 2023. 5. 11. 10:09
728x90

1. 이터레이터 패턴이란?

- 책을 읽는다고 상상해보자. 책은 여러 페이지로 이루어져 있고, 첫 페이지부터 시작해서, 한 페이지씩, 한 문장씩, 한 단어씩 차례대로 읽어 나간다. 그리고 마지막 페이지에 도달하면, 책을 끝내고 다른 활동을 할 수 있다.

- 이터레이터 패턴도 이와 비슷하다. 컬렉션이라는 책과 같은 것을 가지고 작업을 한다. 컬렉션은 여러 아이템으로 이루어져 있고, 이터레이터 패턴은 이 아이템들을 하나씩 차례로 접근할 수 있는 방법을 제공한다. 

- 이터레이터의 장점은 어떤 종류의 컬렉션이든 동일한 방식으로 접근할 수 있다. 즉 컬렉션이 배열이든, 리스트든, 트리든, 그래프등 상관 없이 동일한 방식으로 아이템을 차례대로 접근 할 수 있다. 마치 내가 어떤 종류의 책이든 동일한 방식으로 페이지를 넘기고 문장을 읽는 것과 같다. 

 

* 코드 예시

const map = 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임에도 똑같은 for a of b라는 이터레이터 프로토콜(객체들의 순회할 때 쓰이는 규칙)을 통해 순회하는 것을 볼 수 있다. 

728x90