单例设计模式
单例设计模式
某个类只能有一个实例,提供一个全局的访问点。
单例模式的N种写法
//第一种
//不能实现单例对象的延迟加载
public class AClass {
private AClass() {
}
public final static AClass INSTANCE=NEW AClass();
}
//第二种:枚举实现
public enum AClass{
INSTANCE;
}
//第三种:双重检查锁定
public class AClass {
private AClass() {
}
private static AClass aClass;
public static AClass getInstance() {
if (aClass == null) {
aClass = new AClass();
}
return aClass;
}
}
//第四种:Initialization-on-demand holder idiom
//主要借助JVM加载class的特性来实现的,当JVM加载的类没有任何静态变量要去初始化,那么该类只会在真正被通过方法或变量被用到才进行初始化,这样我们就可以实现延迟初始化的目的
public class AClass {
private AClass() {
}
private static class InstanceHolder{
public final static AClass INSTANCE=new AClass();
}
public static AClass getInstance(){
return InstanceHolder.INSTANCE;
}
}
单例模式的使用场景
- 线程池
- OKhttp实例