//单例模式使用场景:1.固定配置类 2.某种比较耗费资源的连接
class Dajia{
//知识点1:私有化构造器,使得外部无法new对象,只能从我这获取
private Dajia(){
}
//使用懒汉式,懒加载,不用的时候减小内存开销
private static Dajia dajia = null;
//知识点2:提供工厂方法,将这个对象给你
public static Dajia dajia(){
//知识点3:第一判断非空的作用是提高效率,防止下一次来访问时不需要每次都锁住方法或代码块获取单例
if(dajia == null){
//知识点4:要用到class锁,因为当前对象未被创建,锁是为了防止出现多个实例对象
synchronized (Dajia.class){
//知识点5:第二重判断非空是为了防止返回空的对象
if(dajia == null){
dajia = new Dajia();
}
}
}
return dajia;
}
}
京公网安备 11010502036488号