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

2022-09-02 12:15:11

Java 中的单例应该使用静态变量还是成员变量?两者都有优势吗?


答案 1

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

应将静态值用于类级变量。


答案 2

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

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

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


推荐