Java单例应该使用静态变量吗?
这个问题在这里已经有了答案:
你应该使用成员变量。 单例是一个对象(即类的一个实例),因此应该这样建模; 即使你只是打算创建其中的一个。
静态应该用于类级变量。
需要对单例实例进行静态引用,但实例本身应该使用实例变量,就像常规类一样。
原因在于单例实例毕竟是一个对象,所以通常的优秀设计原则仍然适用于它的类。
此外,今天它是一个单身人士,但明天它可能是一个ThreadLocal,或者没有任何形式的实例创建限制。 如果班级以通常的方式设计,这些建筑选择之间的变化很小。 如果您使用静态字段,则此类更改需要更多维护工作才能使这些字段为非静态字段。
您可以避免使用静态变量并使用Enum
来代替:
public enum MySingleton {
INSTANCE;
}
你可以以MySingleton.INSTANCE
身份访问这个单例。
枚举是线程安全的并且通过Enum实现Singleton可确保您的单例即使在多线程环境中也只有一个实例。
链接地址: http://www.djcxy.com/p/78813.html