특징 :
한 개의 클래스 인스턴스만을 갖도록 보장하고 이에 대한 전역적인 접근점을 제공
클래스에서 자신의 유일한 인스턴스로 접근하는 방법을 자체적으로 관리
유일한 인스턴스는 서브클래싱으로 확장되어야 하며 코드 수정 없이 확장된 서브클래스의 인스턴스 사용할 수 있어야 할 때 사용
방법 :
사용자는 Singleton 클래스에 정의된 Instance() 연산을 통해 유일하게 생성되는 단일체 인스턴스에 접근할 수 있음
싱글 턴 패턴의 단점을 스레드상에 동시 객체가 생기는 것을 방지 하기위해서
더블 체키드 라킹 기법이 있고
간단히 inner 클래스 상에서 구현하는 lazy 기법이 있다.