Singleton은 객체 생성을 control 하기 위한 목적으로 사용됩니다. 
객체의 갯수를 오직 하나로 제한하죠. 한개의 Singleton instance가 있으면 
Singleton의 instance 필드들은 한개의 클래스에 한번만 발생하게 됩니다.
Static 필드와 비슷하죠. 
Singleton은 종종 데이터베이스 커넥션이나 socket 연결 등에 사용 됩니다.

예를 들어 데이터베이스에 한개의 connection만 가능할 때 JDBC로 
multithreading을 하다 보면 문제가 발생할 수 있습니다.
이 Singleton은 한번에 한개의 connection혹은 한개의 thread 만 만들어 지도록 관리를 할 수 있습니다.

 

**열거형 싱글톤 - 가장 좋은 방법

public enum Elvis {

     INSTANCE;

     public void leaveTheBuilding() { ... }

}


이 방법은 public 필드 방법과 기능적으로 동일하지만 더 간단하다. 
그리고 복잡한 직렬화나 리플렉션(reflection) 상황에서도 직렬화가 자동으로 지원되고, 
인스턴스가 여러 개 생기지 않도록 확실하게 보장해준다.

이 방법은 아직 널리 적용되지 않았지만 싱글톤을 구현하는 가장 좋은 방법이다.

+ Recent posts