Enum版单例:如何实现及其优势?

时间:2014-05-04 15:29:31

标签: java enums singleton

    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;
}

1 个答案:

答案 0 :(得分:0)

根据Joshua Bloch使用枚举创建一个sigleton是一个类是单例的保证。甚至使用反射也无法创建多个实例。但是有些人不喜欢用这种方式实现sigletons。它是辩论的主题。

顺便说一句,你拥有的代码片段不是线程安全的。多个线程可以同时进入getInstance方法,并且您的sigleton模式将会中断。如果您需要更多解释,请在评论中告诉我。

See this link它用代码解释了如果你的sigleton模式没有实现为enum,它将如何破解。