module

Module Pattern, Revealing Module Pattern

먼저 Module Pattern, Revealing Module Pattern을 알아보기 전에,
왜 이런 패턴들이 필요한지 알아보기 위해 Object Literal을 살펴보겠습니다.

 

Object Literal

 

위와 같이 Object를 표현한 방식을 Object Literal이라고 합니다.

Object Literal을 통해 변수와, 함수를 한 Object에 표현할 수 있습니다.
하지만 이 경우 private 멤버를 표현할 수 없다는 단점이 있습니다.

 

단점 : private 한 변수나 함수를 표현할 수 없다.(전부 public 이다!)

 

이런 Object Literalprivate, public의 구분을 둘 수 없다는 단점을 극복하기 위해,
Module Pattern이라는 것이 고안되었습니다.

 

Module Pattern

 

Module Pattern에서는 즉시 실행 함수(IIFE) 형태를 통해 모듈을 정의합니다.
즉시 실행 함수 내부에 private 멤버를 정의하고 public멤버를 Object에 담아 return 합니다.
실행을 해보면,

 

 

line 1 : private 변수에 접근할 수 없다

line 2 : private 함수를 호출할 수 없다.

line 3 : public 변수에 접근할 수 있다.

line 4 : public 함수를 호출할 수 있다.

장점 : private 과 public 을 구분지을 수 있다.
단점 : - private, public에 접근하는 방식이 달라진다.
- private 에서 public 에 접근할 수 가 없다.

 

Module Pattern의 단점은 public 과 private에 접근하는 방법이 다르고 일반적인 방식으로 private 함수 내에서 public에 접근할 수가 없습니다.
그렇게 때문에 private method를 public으로 바꾸는 작업등 모듈 API에 수정이 있을 때 수정 요소가 많아지게 됩니다.
이 단점을 극복하기 위해 Revealing Pattern이 고안되었습니다.

 

Revealing Module Pattern

 

Revealing"드러내다" 라는 의미로 private/public을 같은 형태로 정의하되 ,

마지막(return)에는 public API만을 드러내는 방식입니다.

 

 

이 방식은 모듈내에서 public 과 private 에 접근하는 방식을 같게 해줄수 있습니다. 또한 모듈 맨마지막에 public 요소를 드러내어 쉽게 private 요소를 public 으로 바꿔줄 수도 있습니다.
return 을 보고 private 와 public을 한번에 알아보기 힘들기 때문에 private 요소의 이름 앞은 _(underscore) 로 표현하기도 합니다.

 

'Design Pattern' 카테고리의 다른 글

Singleton Pattern  (0) 2019.03.04

+ Recent posts