[디자인패턴] 싱글턴(Singleton)

2021년 02월 19일, 20:30

생성 패턴 - 싱글턴(Singleton)

  • 단 하나의 인스턴스를 사용하고, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
  • 장점
    • 한번의 인스턴스 생성 후 하나의 인스턴스만 사용하므로 메모리 낭비를 방지 할 수 있음
    • 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다
  • 단점
    • 인스턴스가 너무 많은 일을 하거나 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아짐(개방-폐쇄 원칙 위배)
      • 따라서, 테스트와 수정이 어려워짐
    • 멀티 쓰레드 환경에서 race condition이 발생 할 수 있음
      • 보통, 클래스 안에서 생성자를 private하게하여 내부에서만 호출 될 수 있게하여 아예 class가 초기화되는 시점에 instance를 생성

참고자료