单例模式详解
请看下面两个class:
Soup1类和Soup2类展示了如何通过将所有的构造器指定为private来阻止直接创建某个类的实例。
请一定要牢记,如果没有明确地至少创建一个构造器的话,就会帮你创建一个默认构造器(不带有任何参数的构造器)。如果我们自己编写了默认的构造器,那么就不会自动创建它了。如果把该构造器指定为private,那么就谁也无法创建该类的对象了。
但是现在别人该怎样使用这个类呢?上面的例子就给出了两种选择:在Soup1中,创建一个static方法,它创建一个新的Soup1对象并返回一个对它的引用。如果想要在返回引用之前在Soup1上做一些额外的工作,或是如果想要记录到底创建了多少个Soup1对象(可能要限制其数量),这种做法将会是大有裨益的。
Soup2用到了所谓的设计模式。这种特定的模式被称为singleton(单例),这是因为你始终只能创建它的一个对象。Soup2类的对象是作为Soup2的一个static private成员而创建的,所以有且仅有一个,而且除非是通过public方法access0,否则是无法访问到它的。
如果该类的某个static成员是public的话,则客户端程序员仍旧可以调用该static成员,尽管他们并不能生成该类的对象。