싱글톤패턴

Published: by Creative Commons Licence

  • Tags:

싱글톤 패턴

Singleton Pattern

  • 이플리케이션이 시작될 떄 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴
  • 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후 호출된 생성자는 최초에 생성한 객체를 반환한다. (자바에선 생성자를 private로 선언해서 생성 불가능하게 하고 getInstance()로 받아쓰기도 함)

사용 이유

  • 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 떄문에 메모리 낭비를 방지할 수 있다.
  • 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.

문제점

  • 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아져 "개방-폐쇄 원칙"을 위배하게 된다.
  • 수정이 어려워지고 테스트 하기 어려워진다.
  • 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 두개가 생성되는 경우가 발생할 수 있다.

참고