应用场景
单例模式,英文名Singleton Pattern
它规定一个类只有一个实例化对象,并且提供获取唯一实例的方法
使用这种模式一般有两种可能性
- 一是希望节省内存,避免重复创建内容相同的对象
- 二是在业务上,该类的对象属性是固定的,比如SystemConfig类,创建多份操作不当容易造成数据不一致
单例模式有很多中实现方式,只要能保证类实例唯一,都是单例模式
实现一
单例模式的标准写法
public class SingletonTestA {
//唯一实例,类初始化时就创建,这样可以保证线程安全
private static final SingletonTestA instance = new SingletonTestA();
//禁用构造方法,这样就无法手动创建多份实例
private SingletonTestA() {
}
//通过方法返回唯一实例
public static SingletonTestA getInstance() {
return instance;
}
}
实现二
在单例模式的基础上扩展出一个三例模式
public class SingletonTestC {
private static final List instances = new ArrayList();
static {
instances.add(new SingletonTestC());
instances.add(new SingletonTestC());
instances.add(new SingletonTestC());
}
public static int getInstanceCount() {
return instances.size();
}
public static SingletonTestC getInstance(int index) {
if (index = instances.size())
throw new RuntimeException("index error");
return instances.get(index);
}
}