如果一个类始终只能创建一个实例,则这个类被称为单例类。为了避免其他类自由创建该类的实例,应该把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。一旦把该类的构造器隐藏起来,就需要提供一个public方法作为该类的访问点,用于创建该类的对象,且该方法必须使用static修饰(因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类)。
除此之外,该类还必须缓存已经创建的对象,否则该类无法知道是否曾经创建过对象,也就无法保证只创建一个对象。为此该类需要使用一个成员变量来保存曾经创建的对象,因此该成员变量需要被上面的静态方法访问,故该成员变量必须使用static修饰。
class Singleton
{
// 使用一个类变量来缓存曾经创建的实例
private static Singleton instance;
// 对构造器使用private修饰,隐藏该构造器
private Singleton(){}
// 提供一个静态方法,用于返回Singleton对象,该方法可以加入自定义控制,保证只产生一个对象
public static Singleton getInstance()
{
// 如果instance为null,则表明还不曾创建Singleton对象
if(instance == null){
instance = new Singleton();
}
return instance;
}
}