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源码举例: