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 lazy = null;
();
Singleton {
(lazy == ) {
(object) {
(lazy == ) {
lazy = ();
}
}
}
lazy;
}
{}
}


