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源码举例:
07-17 21:26