[면접을 위한 CS 전공지식 노트] 디자인 패턴 - 이터레이터 패턴, 노출모듈 패턴

Yijun Jeon·2024년 1월 3일
0

CS 전공지식

목록 보기
6/21
post-thumbnail

디자인 패턴

💡 디자인 패턴이란?

  • 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것

이터레이터 패턴

💡 이터레이터 패턴 (iterator pattern) 이란?

이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴으로, 순회할 수 있는 자료형의 구조와는 상관없이 이터레이터라는 하나의 인터페이스로 순회 가능

  • 이터레이터 프로토콜 : 이터러블한 객체들을 순회할 때 쓰는 규칙
  • 이터러블한 객체 : 반복 가능한 객체로, 배열을 일반화한 객체

JS

🔗 이터레이터 패턴 자바스크립트 예시
👉 for a of b라는 이터레이터 프로토콜을 통해 다른 자료구조들을 동일하게 순회

const mp = new Map()
mp.set('a',1)
mp.set('b',2)

const st = new Set()
st.add(1)
st.add(2)

for(let a of mp) console.log(a) // ['a',1] ['b',2]
for(let a of st) console.log(a) // 1 2

노출모듈 패턴

💡 노출모듈 패턴 (revealing module pattern) 이란?

즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴

🔗 실제 활용

  • 자바스크립트 CJS(CommonJS)

JS

⭐️ 자바스크립트는 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행되므로, 노출모듈 패턴을 통해 private, public 접근 제어자를 구현하기도 함

🔗 노출모듈 패턴 자바스크립트 예시

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.a) // undefined

0개의 댓글