1. 单例模式基础与核心价值
单例模式是Java设计模式中最基础也最常用的一种,它的核心价值在于确保一个类在JVM中只有一个实例,并提供一个全局访问点。听起来简单,但实际开发中却藏着不少玄机。我在电商系统开发中就曾遇到过因单例实现不当导致的库存计算错误——多个实例同时操作库存数据,结果可想而知。
1.1 单例模式的典型应用场景
单例模式特别适合以下场景:
- 需要频繁创建和销毁的对象(如线程池、连接池)
- 重量级对象且需要共享访问(如配置管理器、日志记录器)
- 需要严格控制实例数量的场景(如序列号生成器)
以数据库连接池为例,如果每次请求都新建连接,不仅效率低下还会快速耗尽系统资源。通过单例模式管理连接池,既能复用连接又能控制总数,实测可降低80%以上的连接创建开销。
1.2 实现单例的三要素
无论哪种单例实现,都必须包含这三个核心要素:
- 私有化构造函数 - 防止外部通过new创建实例
- 静态私有成员变量 - 保存唯一实例
- 静态公有访问方法 - 提供全局访问入口
java复制// 基础骨架示例
public class Singleton {
private static Singleton instance; // 要素2:静态私有变量
private Singleton() {} // 要素1:私有构造
public static Singleton getInstance() { // 要素3:静态公有方法
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 饿汉式单例:简单但可能浪费资源
2.1 经典实现解析
饿汉式是最直接的单例实现方式,在类加载时就完成实例化:
java复制public class EagerSingleton {
// 类加载时立即初始化
private static final EagerSingleton instance = new EagerSingleton();
privat
