Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

mooni

[Design Pattern] 이터레이터 패턴(Iterator Pattern) & 노출모듈 패턴(Revealing module Parttern) 본문

etc.

[Design Pattern] 이터레이터 패턴(Iterator Pattern) & 노출모듈 패턴(Revealing module Parttern)

mooni_ 2025. 4. 6. 20:58

이터레이터 패턴(Iterator Pattern) : iterator를 사용하여 컬랙션의 요소들에 접근하는 디자인 패턴

> 이터레이터 프로토콜 : 이터러블한 객체들을 순회할 때 쓰이는 규칙

> 이터러블한 객체 : 반복 가능한 객체로 뱁열을 일반화한 객체

  • 여러가지 자료형의 구조와는 상관 없이 iterator라는 하나의 인터페이스로 순회 가능

 

EX) JavsScript에서의 Iterator

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)

=> mp은 Map, st는 Set의 자료구조임에도 같은 이터레이터 프로토콜(for a of b)을 통해 순회하고 있음

 


노출모듈 패턴(Revealing module Pattern) : 즉시 실행 함수를 통해 private, public과 같은 접근 제어자를 만드는 패턴

> 즉시 실행 함수 : 함수를 정의하자마자 바로 호출하는 함수(초기화 코드, 라이브러리 내 전역 변수의 충돌 방지 등에 사용)

  • JS는 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행되기 때문에 노출모듈 패턴을 통해 private와 public을 구현하기도 함

 

EX) JavaScript에서의 Revealing module

const pukuba = (() => {
  const a = 1
  const b = () => 2
  const public = {
    c: 2,
    d: () => 3
  }
  return public
})()

console.log(pukuba) //{ c: 2, d: [Function: d] 
console.log(pukuba) //undefined

=> a, b는 private로 외부에서 접근이 불가하고 c, d는 접근 가능함