Java单例应该使用静态变量吗?

这个问题在这里已经有了答案:

  • 静态类和单例模式之间的区别? 36个答案

  • 你应该使用成员变量。 单例是一个对象(即类的一个实例),因此应该这样建模; 即使你只是打算创建其中的一个。

    静态应该用于类级变量。


    需要对单例实例进行静态引用,但实例本身应该使用实例变量,就像常规类一样。

    原因在于单例实例毕竟是一个对象,所以通常的优秀设计原则仍然适用于它的类。

    此外,今天它是一个单身人士,但明天它可能是一个ThreadLocal,或者没有任何形式的实例创建限制。 如果班级以通常的方式设计,这些建筑选择之间的变化很小。 如果您使用静态字段,则此类更改需要更多维护工作才能使这些字段为非静态字段。


    您可以避免使用静态变量并使用Enum来代替:

    public enum MySingleton {
        INSTANCE;
    }
    

    你可以以MySingleton.INSTANCE身份访问这个单例。

    枚举是线程安全的并且通过Enum实现Singleton可确保您的单例即使在多线程环境中也只有一个实例。

    链接地址: http://www.djcxy.com/p/78813.html

    上一篇: Should a Java singleton use static variables?

    下一篇: Difference between singleton class and static class?