singleton-pattern

싱글턴 패턴

어떤 Class의 Instance를 단 하나만 생성할 수 있다면, 그것을 Singleton Class이라고 하고, 이 디자인 패턴을 Singleton Pattern이라고 한다.

어디에 사용되는가?

  • Class에 시스템에 한번만 저장되어야하는 데이터가 포함되는 경우

어떻게 구현하는가?

  1. 생성자는 'new'를 통해 생성할 수 없게 하기 위해서 private으로 선언되어야한다.
  2. 객체가 생성될 때 스레드 안전성을 보장하는지 확인해야한다.
  3. 지연 로딩을 지원하는지 여부를 확인해야한다.
  4. getInstance() 함수의 성능이 충분해야한다.

단점

  1. Class간의 의존성을 감춘다.
    1. 클래스 간의 의존성을 활실히 드러나는 것이 좋다.
    2. 하지만 싱글턴 패턴은 명시적으로 생성할 필요가 없고, 매개변수 전달에 의존할 필요가 없으며, 함수에서 직접 호출할 수 있기에 의존성이 드러나지 않는다.
    3. 의존성 주입을 통해 부분적 해결이 가능하다.
  2. 코드의 확장성에 영향을 미친다.
    1. 하나의 instance만 생성할 수 있기에, 두 개 이상의 인스턴스가 필요한 경우, 코드를 전면적으로 수정해야할 수 있다.