下面是一个使用单例设计模式的类:
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
是私有的和静态的。我知道私有使实例变量只能访问该特定类的对象,但它有何帮助?
答案 0 :(得分:6)
如果是公开,每个人都可以使用Singleton.instance
并抱怨,因为它是空的。使其成为私有会强制它们使用getInstance()
,这可以保证返回非空实例。
如果它不是 static ,它将是Singleton的实例变量,因此您需要一个Singleton实例来访问唯一没有多大意义的Singleton实例。