싱글톤 패턴(Singleton)

jade·2023년 4월 29일
0

TS공부

목록 보기
1/1

싱글톤 패턴이란?

소프트웨어 디자인 패턴 중 하나로, 클래스의 인스턴스를 단 한개만 생성하도록 보장하는 패턴.
애플리케이션에서 전역적으로 접근해야 하는 리소스, 설정 정보, 캐시 등을 담당하는 객체를 구현할 때 유용하게 사용.

싱글톤 패턴 특징

  • 생성자를 Private로 설정, 외부에서 직접적으로 인스턴스를 생성하지 못하게 함
  • 클래스 내부에서 유일한 인스턴스 생성 후, 이를 반환하는 정적 메서드를 제공
  • 생성된 인스턴스는 전역적으로 접근 가능한 변수에 저장, 필요할 때마다 이 변수들을 통해 인스턴스에 접근

싱글톤 패턴 장점

  • 인스턴스를 한 번만 생성하므로 메모리 사용을 줄일 수 있음
  • 전역적으로 접근 가능한 인스턴스를 제공, 다른 객체들이 쉽게 참조 가능
  • 중복 인스턴스 생성을 방지하며, 데이터 일관성 유지 가능

싱글톤 패턴 단점

  • 다른 객체와 결합성이 강해 테스트 및 유지보수 어려움
  • 멀티스레드 환경에서 동기화 문제 발생 가능
  • 객체 수명이 애플리케이션 수명과 같아, 객체의 생성 시점 조절이 어려움
  • 객체 생성 이후에도 자원을 계속 점유하므로 메모리 누수 가능성이 있음

싱글톤 패턴 예시

class Singleton {
  private static instance: Singleton;

  private constructor() {
    // 외부에서 인스턴스 생성 방지
  }

  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }

  public doSomething(): void {
    // 싱글톤 인스턴스에서 수행할 작업
  }
}

// 아래와 같이 싱글톤 인스턴스에 접근할 수 있습니다.
const instance1 = Singleton.getInstance();
instance1.doSomething();

const instance2 = Singleton.getInstance();
instance2.doSomething();

console.log(instance1 === instance2); // true
  • getInstance 메서드는 instance 멤버 변수를 확인하고, 없으면 새로운 인스턴스를 생성하여 instance에 할당한 후, instance를 반환
  • 싱글톤 패턴을 사용할 때는 getInstance 메서드를 통해서만 인스턴스에 접근 가능하게 해야함

0개의 댓글