상세 컨텐츠

본문 제목

[CS] 싱글톤 패턴: 전역 상태 관리의 핵심

CS 과제 정리

by thisnorm 2025. 1. 21. 21:47

본문

싱글톤 패턴(Singleton Pattern)은 클래스의 인스턴스가 오직 하나만 존재하도록 보장하는 디자인 패턴입니다. 이 패턴은 전역 상태를 관리하거나 공유 리소스를 제어하는 데 유용하며, 애플리케이션 전반에 걸쳐 동일한 인스턴스를 사용할 수 있도록 한다.

 

1. 싱글톤의 정의 및 특징

1-1. 정의

싱글톤 패턴은 클래스의 인스턴스가 하나만 생성되어 애플리케이션 전역에서 접근 가능하도록 하는 디자인 패턴이다.


1-2. 특징

  • 인스턴스의 유일성: 클래스의 인스턴스가 하나만 생성된다.
  • 전역 접근성: 싱글톤 인스턴스는 애플리케이션의 어느 부분에서도 접근 가능하다.
  • 지연 초기화: 필요할 때만 인스턴스를 생성하여 자원을 절약한다.

2. 장점과 단점

2-1. 장점

  • 메모리 사용 효율성: 동일한 인스턴스를 여러 번 생성하지 않으므로 메모리 사용이 최적화다.
  • 전역 상태 관리의 용이성: 애플리케이션 전반에서 동일한 상태를 유지할 수 있어 관리가 용이하다.
  • 데이터 공유: 여러 컴포넌트가 동일한 인스턴스를 사용하여 데이터 일관성을 유지할 수 있다.

2-2. 단점

  • 테스트의 어려움: 전역 상태를 가지므로 단위 테스트 시 의존성 관리가 어렵다.
  • 의존성 증가: 전역 상태 사용으로 인해 코드의 의존성이 증가하여 유지보수가 어려울 수 있다.
  • 멀티스레드 환경에서의 안전성 문제: 동시 접근으로 인해 문제가 발생할 수 있다.

3. 예시

데이터베이스 연결을 관리하는 싱글톤 클래스를 구현할 수 있다. 이 클래스는 데이터베이스 연결을 생성하고 애플리케이션의 모든 부분에서 동일한 연결을 사용할 수 있게 한다.

class Database {  
    constructor() {  
        if (!Database.instance) {  
            this.connection = this.connectToDatabase();  
            Database.instance = this;  
        }  
        return Database.instance;  
    }  

    connectToDatabase() {  
        // 데이터베이스 연결 로직  
        return "Database Connection Established";  
    }  
}  

// 사용 예시  
const db1 = new Database();  
const db2 = new Database();  

console.log(db1 === db2); // true, 두 변수는 동일한 인스턴스를 참조

https://docs.nestjs.com/#providers

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea

docs.nestjs.com

관련글 더보기