1. 单例模式
1.1 概述
单例模式 (Singleton Pattern):是一种常用的设计模式,主要用于确保一个类在整个应用程序中只有一个实例,并提供一个全局访问点。
核心作用
- 控制资源访问:常用于管理共享资源,可以避免多线程竞争或重复创建资源导致的性能问题。
- 全局状态管理:当某些对象需要被多个模块或组件共享时,单例模式提供统一的访问入口。
- 保证数据一致性:避免多个实例导致的数据不一致问题。
常见实现方式
- 饿汉模式:在类加载时就创建实例,避免了线程安全问题,但可能会造成资源浪费,尤其是当实例初始化过程复杂或占用较多资源时。
- 懒汉模式:一种延迟初始化的单例实现方式。实例在第一次被使用时才创建,而非在类加载时就创建。这种方式可以节省资源,但需要考虑线程安全问题。
1.2 饿汉模式
public class Singleton {
// 类加载时进行实例化
private static final Singleton hungry = new Singleton();
// 全局唯一获取实例的接口
public static Singleton getInstance() {
return hungry;
}
// 构造方法私有化
private Singleton() {}
}
特点:类加载时进行实例化,不存在运行时实例化过程,所以不存在线程安全问题。
缺点:即使后面的场景中没有使用到该实例,也会将该实例创建出来,可能会造成不必要的资源浪费。
1.3 懒汉模式
class Singleton {
// volatile:禁止指令重排序
private static volatile Singleton ;
();
Singleton {
(lazy == ) {
(object) {
(lazy == ) {
lazy = ();
}
}
}
lazy;
}
{}
}


