[디자인패턴] 노출모듈 패턴, Revealing Module Pattern

sunny·2023년 3월 19일

디자인 패턴

목록 보기
8/11

노출모듈 패턴, Revealing Module Pattern


노출모듈 패턴이란?

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

  • 자바스크립트는 private나 public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행된다. 그렇기 때문에 노출모듈 패턴을 통해 private나 public 접근 제어자를 구현하기도 한다.

노출모듈 패턴의 장단점

장점

  • 개발자에게 깔끔한 접근 방법을 제공
  • private 데이터 제공
  • 전역 변수를 덜 더럽힘
  • 클로저를 통해 함수와 변수를 지역화
  • 스크립트 문법이 더 일관성 있음
  • 명시적으로 public 메소드와 변수를 제공해 명시성을 높임

단점

  • private 메소드 접근할 방법이 없음
  • private 메소드에 대해 함수 확장하는 데에 어려움이 있음
  • private 메소드를 참조하는 public 메소드를 수정하기 어려움

용어 정리

  • public : 클래스에 정의된 함수에서 접근 가능하며 자식 클래스와 외부 클래스에서 접근 가능한 범위
  • protected : 클래스에 정의된 함수에서 접근 가능, 자식 클래스에서 접근 가능하지만 외부 클래스에서 접근 불가능한 범위
  • private : 클래스에 정의 함수에서 접근 가능하지만 자식 클래스와 외부 클래스에서 접근 불가능한 범위
  • 즉시 실행 함수 : 함수를 정의하자마자 바로 호출되는 함수. 초기화 코드, 라이브러리 내 전역 변수의 충돌 방지 등에 사용한다.

예제 코드

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

console.log(pukuba)
console.log(pukuba.a)

// { c: 2, d: [Function: d] }
// undefined
  • ab 는 다른 모듈에서 사용할 수 없는 변수나 함수이며, private 범위를 갖는다
  • cd 는 다른 모듈에서 사용할 수 있는 변수나 함수이며, public 범위를 갖는다.

참고 자료

0개의 댓글