一、单件模式定义及经典实现
确保一个类只有一个实例,并提供一个全局访问点。
单例的经典(简单)实现如下:
public class Singleton{
// 利用静态变量记录Singleton类的唯一实例
private static Singleton uniqueInstance;
// ... 类的其他成员和方法
// 声明构造器为私有,即只有本类内才可以调用(new Singleton())
private Singleton() {}
// 全局访问点:只有通过该类的getInstance方法才能获取到唯一实例
public static Singleton getInstance() {
if (uniqueInstance == null) {
// 如果实例不存在,则创建实例,以此确保只有一个唯一实例
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
因为getInstance是static方法,所以可以通过类名直接调用:Singleton.getInstance,这也是获取唯一实例的唯一接口。
总的说来,单例模式要素有:
- 私有构造方法
- 私有静态引用指向自己实例
- 以自己实例为返回值的公有静态方法