0

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

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

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

        return instance;
    }
    ...
    public void doSomething()
    {
        ... 
    }
}

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

4

1 回答 1

6

如果它是public,每个人都可以使用Singleton.instance并且会抱怨,因为它是空的。将其设为私有会强制他们使用getInstance(),这保证返回一个非空实例。

如果它不是static,它将是 Singleton 的实例变量,因此您需要一个 Singleton 实例来访问唯一的 Singleton 实例,这没有多大意义。

于 2013-05-12T15:31:40.300 回答