Language/Java

[Java] 싱글톤 패턴(Singleton)

마볼링 2022. 6. 25. 22:03

싱글톤 패턴

  • 디자인 패턴의 종류 중 하나
  • 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어서 사용하는 디자인 패턴

  • 장점
    • 고정된 메모리 영역을 얻으면서 한번은 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다.
    • 싱글톤으로 만들어진 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.
    • 인스턴스가 절대적으로 한 개만 존재하는 것을 보증할 수 있다.
    • 두 번째 이용시 부터는 객체 로딩 시간이 줄어 성능이 좋아진다.
  • 단점
    • 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우에 다른 클래스의 인스턴스들 간에 결합도가 높아져 "개방-폐쇄 원칙" 위배
    • 수정이 어려워지고 유지보수의 비용 증가
    • 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 2개 생성될 가능성 존재