一、什么是Singleton?
1. 简介
Singleton: 在 java 中即指单例设计模式,它是软件开发中最常用的设计模式之一。
单例模式,单:唯一; 例:实例
单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。
例如:java的代表 JVM 运行环境的Runtime类。
2. 要点
(1) 某个类只能有一个实例: 意味着构造器必须私有化
(2)它必须自行创建这个实例: 用含有一个该类的静态变量来保存这个唯一的实例
(3)它必须自行向整个系统提供这个实例:
对外提供获取该实例对象的方式:
直接暴露;
用静态变量的get方法获取。
3. 饿汉式构造
在类初始化时直接创建对象,不存在线程安全问题
(1)直接实例化饿汉式(简洁直观)
/**
* @author Harbour
* @create 2020-11-10 9:35
*
* (1)构造器私有化
* (2)用静态变量存储此实例
* (3)向外提供这个实例,用public修饰
* (4)强调这是一个单例,可以用final修改,大写
*/
public class Singleton01 {
// 1. 直接实例化的方式
public static final Singleton01 INSTANCE = new Singleton01();
private Singleton01() {
};
}
(2)枚举式(最简洁)
/**
* @author Harbour
* @create 2020-11-10 9:42
* (1) 枚举类: 表示该类型的对象只有有限的几个
* (2) 我们可以给他限定为1个,即成了单例模式
* (3) 枚举类的构造器都是私有化的
*/
public enum Singleton02 {
// 2. 直接枚举类创建
INSTANCE
}
(3)静态代码块饿汉式(适合复杂实例化)
package singleton;
import javax.annotation.Resource;