Java 单例应该使用静态变量吗?
Java 中的单例应该使用静态变量还是成员变量?两者都有优势吗?
应使用成员变量。单例是一个对象(即类的实例),因此应该这样建模;即使您只打算创建其中之一。
应将静态值用于类级变量。
需要有对单例实例的静态引用,但实例本身应该使用实例变量,就像常规类一样。
原因是单例实例毕竟是一个对象,所以通常的良好设计原则仍然适用于它的类。
此外,今天它是一个单例,但明天它可能是一个ThreadLocal,或者没有任何类型的实例创建限制。如果以通常的方式设计类,则这些体系结构选择之间的变化非常小。如果使用静态字段,则此类更改需要更多的维护工作才能使字段成为非静态字段。