主题:面试基础知识储备 2019.11.13
单例模式
单例模式是创建型设计模式中非常常用的设计模式,定义:单例类确保只有一个对象,并提供全局访问点。
双重检查
public class SingleTon{
private volatile static SingleTon instance = null; //0.volatile关键字禁用编译器重排列
private SingleTon(){} //1. 私有化构造函数
public static SingleTon getInstance(){
if(instance == null){ //2. 检查instance是否为空
synchronized(SinglTon.class){ //3. 获取SingleTon class对象锁
if(instance == null){ //4. 防止instance被多次初始化
instance=new SingleTon(); //5: 1.为对象分配空间
// 2.对象初始化
// 3.instance变量指向对象起始地址
}
}
}
return instance;
}
}
静态内部类
public class SingleTon{
private SingleTon(){} //1. 构造函数私有化
private static class SingleTonInstanceHodler{
private static SingleTon instance = new SingleTon(); //2. 内部类只有第一次主动访问时初始化,利用类加载器保证初始化一次
}
public static SinlgeTon getInstance(){
return SingleTonInstanceHolder.instance;
}
}
基于枚举
public enum SingleTon{
INSTANCE;
public void saySomething(){
System.out.println("Say something i am giving up on you!");
}
}