1、什么是单例模式

​单例模式是指保证某个类在整个软件系统中只有一个对象实例,并且该类仅提供一个返回其对象实例的方法(通常为静态方法)

2、单例模式的种类

​经典的单例模式实现方式一般有五种:

2.1 饿汉式

// ①饿汉式:使用静态常量
static class Singleton {
    // 1.构造器私有化,其他类不能new
    private Singleton() {}
    // 2.类的内部创建对象
    private final static Singleton instance = new Singleton();
    // 3.向外部暴露一个静态的公共方法
    public static Singleton getInstance() {
        return instance;
    }
}
// ②饿汉式:使用静态代码块
static class Singleton {
    // 1.构造器私有化,其他类不能new
    private Singleton() {}
    private static final Singleton instance;
    // 2.静态代码块实例化
    static {
        instance = new Singleton();
    }
    // 3.向外部暴露一个静态的公共方法
    public static Singleton getInstance() {
        return instance;
    }
}

饿汉式顾名思义就是迫不及待地加载该类的对象实例,对象实例的加载最早是在类的加载过程中的初始化阶段(即静态引用变量的加载,对应字节码文件中<clinit>方法的执行),加载过程由JVM保证线程安全。饿汉式会浪费内存,但是随着计算机的发展,内存已经不是问题了,所以使用饿汉式也未尝不可。

​JDK源码举例:

设计模式之单例模式-LMLPHP
07-17 21:26