单例设计模式

单例设计模式

某个类只能有一个实例,提供一个全局的访问点。

单例模式的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;
    }
}

单例模式的使用场景

  1. 线程池
  2. OKhttp实例
posted @ 2023-06-14 12:14  Ysun_top  阅读(7)  评论(0编辑  收藏  举报