Singleton Pattern
View all Design Patterns
하나의 클래스로부터 하나의 객체만 생성되도록 하는 방법이다.
Class Diagram
Code
class SingletonClass {
private static instance: SingletonClass;
private constructor() {
// set constructor to private
}
static getInstance(): SingletonClass {
if (!SingletonClass.instance) {
SingletonClass.instance = new SingletonClass();
}
return SingletonClass.instance;
}
}
// when client creates an instance
const singletonClass1 = SingletonClass.getInstance();
const singletonClass2 = SingletonClass.getInstance();
console.log(singletonClass1 === singletonClass2);
Pros and Cons
Pros
- Connection Pool, Cache, Logging 시 하나의 인스턴스 생성을 보장하기 때문에 유용하다.
Cons
- 하지만 그렇다고 해서 무조건 하나의 객체만 생성하도록 싱글톤 패턴을 모두 적용하는 것은 바람직하지 않다.
- Global State처럼 동작하기 때문에, 한 쪽에서 객체를 수정하면 모든 영역에 영향을 끼쳐 디버깅하기 어렵다.
- High Coupling으로