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