单例模式都有哪些?有什么区别?
单例模式的5种实现方式及区别(Java版)
作为高频面试题,单例模式不仅要会写,更要理解每种写法的应用场景和潜在风险。以下是5种经典实现,附带线程安全性分析和适用场景对比。
1. 饿汉式(Eager Initialization)
java
复制
下载
public class Singleton {private static final Singleton INSTANCE = new Singleton(); // 类加载时就初始化private Singleton() {} // 私有构造public static Singleton getInstance() {return INSTANCE;} }
✅ 优点:简单、线程安全(JVM类加载机制保证)
❌ 缺点:即使不用也会创建实例,可能浪费内存
🔹 适用场景:单例对象占用资源少,且程序启动就要用(如配置类)
2. 懒汉式(Lazy Initialization)
基础版(线程不安全)
java
复制
下载
public class Singleton {private static