반응형
Singleton Pattern(싱글턴 패턴) 은 특정 클래스의 인스턴스를 단 하나만 생성하도록 제한하는 디자인 패턴입니다. 이 패턴은 전역 상태를 관리할 때 유용하며, 애플리케이션 설정, DB 연결, 로그 기록 등에서 자주 활용됩니다.
🧱 Singleton Pattern이란?
Singleton Pattern은 하나의 인스턴스를 생성하고, 이를 어디서든 접근할 수 있도록 보장하는 구조입니다. 자바스크립트에서는 클로저와 모듈 패턴을 활용하여 구현됩니다.
const Singleton = (function () {
let instance;
function createInstance() {
return { timestamp: Date.now() };
}
return {
getInstance: function () {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
const a = Singleton.getInstance();
const b = Singleton.getInstance();
console.log(a === b); // true
✅ 장점
- 전역 인스턴스 보장: 시스템 전체에서 동일한 객체를 공유할 수 있음
- 리소스 절약: 객체를 한 번만 생성하므로 메모리 낭비가 없음
- 중앙 집중형 관리: 설정, 상태 관리 등에서 일관성을 유지할 수 있음
❌ 단점
- 테스트 어려움: 전역 상태가 테스트 격리를 어렵게 만들 수 있음
- 숨은 의존성: 객체 간 결합도가 높아져 코드 유연성이 떨어질 수 있음
- 클래스 간 의존성 증가: 리팩토링이나 유지보수 시 영향 범위가 넓음
🛠️ 실전 예시: 앱 설정 관리 객체
const Config = (function () {
let instance;
function createConfig() {
return {
apiUrl: 'https://api.example.com',
theme: 'dark',
version: '1.0.0'
};
}
return {
getConfig: function () {
if (!instance) {
instance = createConfig();
}
return instance;
}
};
})();
const config1 = Config.getConfig();
const config2 = Config.getConfig();
console.log(config1 === config2); // true
🧩 결론
Singleton Pattern은 하나의 인스턴스를 공유할 필요가 있을 때 매우 유용한 구조입니다. 하지만 무분별한 사용은 전역 상태로 인한 사이드 이펙트와 테스트 어려움으로 이어질 수 있으므로, 반드시 사용 목적이 명확할 때 활용하는 것이 바람직합니다.
반응형
'Programing > javascript' 카테고리의 다른 글
자바스크립트 Decorator Pattern (0) | 2025.04.19 |
---|---|
자바스크립트 Module Pattern (0) | 2025.04.19 |
자바스크립트 Builder Pattern (0) | 2025.04.19 |
자바스크립트 Prototype Pattern (1) | 2025.04.19 |
자바스크립트 Factory Pattern (0) | 2025.04.19 |
자바스크립트 Constructor Pattern (0) | 2025.04.19 |
자바스크립트의 Behavioral 패턴: 객체 간의 소통을 설계하다 (0) | 2025.04.19 |
자바스크립트의 Structural 패턴: 객체 구조의 유연함을 설계하다 (0) | 2025.04.19 |