원래는 싱글톤 전체 구현에 대한 글을 기록하려 했는데 쓰다보니 Enum 싱글톤에 대한 찬양이 되어버렸네.. 해서 아래부터는 싱글톤들의 발전 과정과 역사다.
public class Singleton{
private Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
...
}
public class Singleton{
private Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance == null)
instance = new Singleton();
return instance;
}
...
}
public class Singleton{
private Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null)
instance = new Singleton();
}
}
return instance;
}
...
}
public enum Singleton{
INSTANCE;
...
}
public class Singleton{
private Singleton(){}
private static class lazyHolder{
private static final Singleton Instance = new Singleton();
}
public static Singleton getInstance(){
return lazyHolder.Instance;
}
...
}
내가 좋아하는 Enum도 깰 수 있단다 ㅠㅠ 참고 : https://www.javacodegeeks.com/2013/06/singleton-design-pattern-a-lions-eye-view.html