创建型设计模式一: 单例模式(SingleTon)

主题:面试基础知识储备 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!");
    }
}

你可能感兴趣的:(创建型设计模式一: 单例模式(SingleTon))