单身类设计问题

Noo*_*oor 0 java singleton design-patterns

下面是使用单例设计模式的类:

class Singleton
{
    private static Singleton instance;
    private Singleton()
    {
        ...
    }

    public static synchronized Singleton getInstance()
    {
        if (instance == null)
            instance = new Singleton();

        return instance;
    }
    ...
    public void doSomething()
    {
        ... 
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道关于上述课程的一些设计问题?为什么实例变量是instance私有的和静态的.我知道私有使实例变量只能访问该特定类的对象,但它如何帮助?

JB *_*zet 6

如果它是公开的,那么每个人都可以使用Singleton.instance并且会抱怨因为它是空的.使其成为私有强制它们使用getInstance(),这保证返回非null实例.

如果它不是静态的,那么它将是Singleton的一个实例变量,因此你需要一个Singleton实例来访问唯一没有多大意义的Singleton实例.