关于Java:Snutelon类设计问题

Singleton Class design Issues

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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是私有的和静态的。我知道私有化使实例变量只能访问特定类的对象,但是它有什么帮助呢?


如果它是公开的,每个人都可以使用Singleton.instance,并且会因为它是空的而抱怨。使之私有化迫使他们使用getInstance(),这保证返回一个非空实例。

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