📺 노출모듈 패턴

2025. 9. 16. 02:29·Computer Science/Design Pattern

노출모듈 패턴(revealing module pattern)은 자바스크립트에서 변수나 함수가 의도치 않게 외부에서 바뀌거나 겹치는 것을 막기 위해, 마치 하나의 '캡슐'처럼 코드를 안전하게 포장하는 패턴입니다.

 

이 캡슐의 일부 내용물은 외부에서 볼 수 없도록 숨기고(private), 허락된 것들만 밖으로 내보여서 사용할 수 있게(public) 해줍니다.

 


💻 코드 예시

1. 자바스크립트(JavaScript)에서의 노출모듈 패턴

a와 b는 다른 모듈에서 사용할 수 있는 변수나 함수인 private 범위를 가집니다. c와 d는 다른 모듈에서 사용할 수 있는 변수나 함수이며 public 범위를 가집니다. 참고로 앞서 설명한 노출모듈 패턴을 기반으로 만든 자바스크립트 모듈 방식으로는 CJF(CommonJS) 모듈 방식이 있습니다.

const pukuba = (() => {
  // --- Private 영역 (내부에서만 사용 가능) ---
  const a = 1; // 외부에서 접근 불가
  const b = () => 2; // 외부에서 호출 불가

  // --- Public으로 노출할 것들을 담는 객체 ---
  const public = {
    c: 2,
    d: () => 3,
  };

  // --- "이것들만 밖에서 쓰세요" 하고 허락하는 과정 ---
  return public;
})(); // 함수를 만들자마자 즉시 실행!

console.log(pukuba); // { c: 2, d: [Function: d] }
console.log(pukuba.a); // undefined (a는 private이라 보이지 않음)
console.log(pukuba.c); // 2 (public이라 접근 가능)

 

용어 설명:

  • public:
    • 클래스에 정의된 함수에서 접근 가능하며 자식 클래스와 외부 클래스에서 접근 가능한 범위
  • protected:
    • 클래스에 정의된 함수에서 접근 가능, 자식 클래스에서 접근 가능하지만 외부 클래스에서 접근 불가능한 범위
  • private:
    • 클래스에 정의된 함수에서 접근 가능하지만 자식 클래스와 외부 클래스에서 접근 불가능한 범위
  • 즉시 실행 함수(IIFE)

함수를 정의함과 동시에 딱 한 번만 실행되고 사라지는 특별한 함수입니다.

  1. 조립 시작: 함수가 실행되며 그 안에 변수와 함수(a, b, public 등)를 만듭니다.
  2. 부품 노출: 필요한 부품(public 객체)만 밖으로 전달(return)합니다.
  3. 임무 완료 후 사라짐: 실행이 끝나면 함수와 그 안의 private 변수들은 외부에서 접근할 수 없는 자신만의 공간에 갇히게 됩니다.

이런 특징 덕분에 내부 변수들을 안전하게 지키면서 원하는 기능만 외부로 제공하는 '캡슐'을 만들 수 있는 것입니다.

'Computer Science > Design Pattern' 카테고리의 다른 글

🅿️ MVP 패턴  (0) 2025.09.16
☢️ MVC 패턴  (0) 2025.09.16
🔁 이터레이터 패턴  (0) 2025.09.16
⛓️ 프록시 패턴과 프록시 서버  (1) 2025.09.16
📡 옵저버 패턴 (Observer Pattern)  (0) 2025.09.09
'Computer Science/Design Pattern' 카테고리의 다른 글
  • 🅿️ MVP 패턴
  • ☢️ MVC 패턴
  • 🔁 이터레이터 패턴
  • ⛓️ 프록시 패턴과 프록시 서버
TECHNING
TECHNING
Hi! I'm techning
  • TECHNING
    TECHNING
    TECHNING
    • 분류 전체보기 (54)
      • Computer Science (45)
        • Design Pattern (11)
        • Programming Paradigm (4)
        • Network (15)
        • Operating System (6)
        • Database (6)
        • Data Structure (3)
      • Algorithm (5)
        • Python (3)
        • Java (1)
      • IT Insight (4)
  • hELLO· Designed By정상우.v4.10.4
TECHNING
📺 노출모듈 패턴
상단으로

티스토리툴바