Skip to main content

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으로
Related Links