반응형
[Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. |
-
싱글톤(singleton) 은 정확히 하나의 인스턴스만 생성되는 클래스.
-
기존에 싱글톤을 구현하는 구현하는 방법은 2가지.
1. 생성자를 private 으로 하고, 유일한 인스턴스에 접근할 수 있도록 public static 맴버를 외부에 제공.
2. 위와 조건은 같지만 member 변수를 public 으로 하는 대신 factory 메소드를 통해 instance 를 전달한다.
2번의 방법은 factory 메소드의 장점을 함께 갖기 때문에 조금 더 좋은 방법이다.
( 조건에 따라 다른 instance 를 return 할 수 있다. )
위의 두가지 방법은 해당 class 를 직렬화 할 때 손이 많이 간다.
( 직렬화 방법에 대해서는 기술하지 않겠다.. )
-
1.5 이후 버전에서는 enum 을 이용하는 방법이 가장 좋은 싱글톤이다.
public enum SingletonClass{
INSTANCE;
...
private int mInt;
private SingletonClass(){
...
}
public void doSth(){
...
}
}
위에 명시한 1번과 기능은 같으면서, 직렬화가 자동으로 지원되며, 인스턴스가 여러 개 생기지 않도록 확실하게 보장해준다.
널리 적용되진 않았지만 싱글톤을 구현하는 가장 좋은 방법!!
반응형
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
[Effective Java] 불필요한 객체의 생성을 피하자. (0) | 2015.04.30 |
---|---|
[Effective Java] private 생성자를 사용해서 인스턴스 생성을 못하게 하자. (0) | 2015.04.05 |
[Effective Java] 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. (0) | 2015.02.08 |
[Effective Java] 생성자 대신 static 팩토리(factory) 메소드 사용을 고려하자. (0) | 2014.09.08 |
[Effective Java] 핵심정리 다시 시작. (0) | 2014.09.06 |
댓글