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는 접근 가능함
'etc.' 카테고리의 다른 글
[Programming Paradigm] 선언형, 함수형, 객체지향, 절차형 프로그래밍 (0) | 2025.04.09 |
---|---|
[Design Pattern] MVC & MVP & MVVM (0) | 2025.04.06 |
[Design Pattern] 프록시 패턴(Proxy Pattern) (0) | 2025.04.06 |
[Design Pattern] 옵저버 패턴(Observer Pattern) (0) | 2025.04.06 |
[Design Pattern] 전략 패턴(Strategy Pattern) / 정책 패턴(Policy Pattern) (0) | 2025.04.05 |