CS 과제 정리
[CS] 싱글톤 패턴: 전역 상태 관리의 핵심
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