设计模式-单例模式

Posted AshShawn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-单例模式相关的知识,希望对你有一定的参考价值。

//单例饿汉
public class Singleton01 {
    private static final Singleton01 INSTANCE = new Singleton01();

    private Singleton01() {
    }

    public static Singleton01 getInstance() {
        return INSTANCE;
    }
}
public class Singleton02 {
    private volatile static Singleton02 INSTANCE;
    //为什么要使用volatile
    //执行构造方法和赋值的操作可能会指令重排序,并发情况下可能有两个对象被初始化
    //故使用volatile,禁止指令重排序,保证线程安全
    private Singleton02() {}

    public static Singleton02 getInstance() {
        if (INSTANCE == null) {
            synchronized (Singleton02.class) {
                if (INSTANCE == null) {
                    INSTANCE = new Singleton02();
                }
            }
        }
        return INSTANCE;
    }
}
public class Singleton03 {
    private Singleton03() {
    }
    //静态内部类自带懒加载
    private static class SingletonHolder {
        private static Singleton03 INSTANCE = new Singleton03();
    }

    public static Singleton03 getInstance() {
        return SingletonHolder.INSTANCE;
    }

}
public enum Singleton04 {
    //枚举
    INSTANCE;
}

以上是关于设计模式-单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块

设计模式之单例模式

设计模式之单例模式