单身类设计问题

时间:2013-05-12 15:27:26

标签: java design-patterns singleton

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

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是私有的和静态的。我知道私有使实例变量只能访问该特定类的对象,但它有何帮助?

1 个答案:

答案 0 :(得分:6)

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

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