Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 2022
- 타입좁히기
- 폰트적용하기
- 누구나 자료구조와 알고리즘
- utilty type
- 제네릭
- React Native
- 리액트
- 타입스크립트
- vue.js
- const 단언문
- 개발콘텐츠
- 성능최적화
- 공통컴포넌트
- 레이아웃쪼개기
- typescript
- 반복줄이기
- react
- Chart.js
- NonNullable
- 티스토리꾸미기
- returnType
- JS console
- React.js
- reactjs
- TSDoc
- click and drag
- 커스텀
- CSS
- javascript
Archives
- Today
- Total
몽땅뚝딱 개발자
Module Pattern 본문
Module Pattern
정의
하나의 모듈을 만들어서 내부의 변수나 함수를 외부에 노출할지 말지 선택하는 패턴이다.
(=공개/비공개 멤버를 구분해서 관리할 수 있게 해주는 구조)
자바스크립트에서 캡슐화(encapsulation)를 위해 널리 쓰였던 디자인 패턴이다. ES6에서 import/export 문법이 생기기 전에도 변수나 함수가 외부에서 막 사용되지 않도록 정보를 숨기는 데 많이 사용됐다. ES6부터는 모듈 시스템이 내장되어있다. (모듈 패턴이 자바스크립트 언어 차원에서 지원되는 구조로 발전한 케이스)
모듈 패턴은 IIFE를 이용해서 구현되는 대표적인 패턴이다. 즉시 실행 함수(IIFE, Immediately Invoked Function Expression)는 자체적인 스코프를 만들어서 변수나 함수를 외부에서 접근할 수 없도록 보호해준다. 이렇게 생성된 '안전한 공간'에서 필요한 기능만 외부로 노출하는 방식이 바로 모듈 패턴이다. 모듈 로직을 작성하고 ()를 붙여서 즉시 실행 후, return된 객체만 외부에 남긴다.
const CounterModule = (function () {
// private 변수
let count = 0;
// private 함수
function log(message) {
console.log('LOG:', message);
}
// 공개 API
return {
increment() {
count++;
log(`Count is now ${count}`);
},
getCount() {
return count;
},
};
})();
CounterModule.increment(); // LOG: Count is now 1
console.log(CounterModule.getCount()); // 1
// console.log(CounterModule.count); → undefined (비공개)
특징
- 정보 은닉 (캡슐화): 외부에서는 private 변수에 접근 불가
- 전역 오염 방지: IIFE로 만들어져서 전역 스코프에 변수 안 퍼짐
- 네임스페이스 제공: 관련된 기능을 한곳에 묶어서 관리 가능
- 유지보수 쉬움: 모듈 단위로 코드가 명확히 분리됨
'Development > 디자인 패턴' 카테고리의 다른 글
Observer Pattern (Pub/Sub) (0) | 2025.04.10 |
---|---|
플럭스(Flux) 패턴 (0) | 2025.04.06 |
Comments