Programing/javascript

자바스크립트 Singleton Pattern

2025. 4. 19. 08:43
반응형

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

✅ 장점

  1. 전역 인스턴스 보장: 시스템 전체에서 동일한 객체를 공유할 수 있음
  2. 리소스 절약: 객체를 한 번만 생성하므로 메모리 낭비가 없음
  3. 중앙 집중형 관리: 설정, 상태 관리 등에서 일관성을 유지할 수 있음

❌ 단점

  1. 테스트 어려움: 전역 상태가 테스트 격리를 어렵게 만들 수 있음
  2. 숨은 의존성: 객체 간 결합도가 높아져 코드 유연성이 떨어질 수 있음
  3. 클래스 간 의존성 증가: 리팩토링이나 유지보수 시 영향 범위가 넓음

🛠️ 실전 예시: 앱 설정 관리 객체

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
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 Builder Pattern
  • 자바스크립트 Prototype Pattern
  • 자바스크립트 Factory Pattern
  • 자바스크립트 Constructor Pattern
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    php
    It
    Java
    SQL
    jsp
    IT블로그
    블로그
    iT's MY LiFE
    사고 싶은 책
    IT 관련
    자바스크립트
    js패턴
    JavaScript
    기초
    디자인패턴
    자바스크립트유틸
    IT·컴퓨터
    위시리스트
    자바
    읽고 싶은 책
Dongkkase
자바스크립트 Singleton Pattern
상단으로

티스토리툴바