싱글턴
인스턴스를 오직 하나만 생성할 수 있는 클래스
- Stateless object(함수 등), 설계상 유일해야하는 시스템 컴포넌트
- Why Stateless?
싱글턴의 단점
- 상속할 수 없다
- private 생성자를 가지고 있기 때문에 상속이 불가능하다. 객체지향의 장점인 상속과 다형성을 사용하지 못한다.
- 사용하는 클라이언트가 테스트하기 어렵다
- 만들어지는 방식이 제한적이기 때문에 테스트시 사용하는 mock Object로 대체하기 어렵다.
- 서버환경에서는 싱글턴이 하나만 만들어지는 것을 보장할 수 없다
- 서버에서 클래스 로더를 어떻게 구성하고 있는지, 여러개에 JVM에 분산되어 설치되어있는지에 따라 하나이상의 오브젝트가 만들어 질 수 있다
- 싱글톤의 사용은 전역상태를 만들 수 있다
- 아무객체나 자유롭게 접근하고 수정할 수 있는 전역 상태는 객체지향 프로그래밍에서 권장하지 않는 모델이다.
- static field / method로만 구성된 클래스를 가지는 것을 권장한다
싱글턴 클래스를 만드는 방법
- 생성자는 private으로 감춰둠(아무나 생성할 수 없게 해야함)
- 인스턴스에 접근할 수 있는 유일한 수단으로 public static member를 마련한다