Public class Singleton{
//private static ref
private Static Singleton uniqueInstance;
//private constructor
private Singleton(){
}
public static Singleton getInstance{
if(uniqueInstance==null){
uniqueInstance= new Singleton();
}
return uniqueInstance;
}
}
上面的类是我目前执行传统使用的单例。如何在这个类上实现单例的枚举版?它与传统相比有什么好处?
即。这是如何工作的:
public enum Foo {
INSTANCE;
}
答案 0 :(得分:0)
根据Joshua Bloch使用枚举创建一个sigleton是一个类是单例的保证。甚至使用反射也无法创建多个实例。但是有些人不喜欢用这种方式实现sigletons。它是辩论的主题。
顺便说一句,你拥有的代码片段不是线程安全的。多个线程可以同时进入getInstance方法,并且您的sigleton模式将会中断。如果您需要更多解释,请在评论中告诉我。
See this link它用代码解释了如果你的sigleton模式没有实现为enum,它将如何破解。