java设计模式 -【单例模式】

发布于:2025-07-25 ⋅ 阅读:(28) ⋅ 点赞:(0)

单例模式的定义

单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。常用于需要控制资源或共享状态的场景,例如数据库连接、日志记录器等

单例模式的实现方式

饿汉式(Eager Initialization)

在类加载时直接创建实例,线程安全但可能造成资源浪费

public class EagerSingleton {
    private static final EagerSingleton instance = new EagerSingleton();
    
    private EagerSingleton() {}
    
    public static EagerSingleton getInstance() {
        return instance;
    }
}

懒汉式(Lazy Initialization)

在第一次调用时创建实例,需加锁保证线程安全

public class LazySingleton {
    private static LazySingleton instance;
    
    private LazySingleton() {}
    
    public static synchronized LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}

双重检查锁(Double-Checked Locking)

减少同步开销,仅在实例未初始化时加锁

public class DoubleCheckedSingleton {
    private static volatile DoubleCheckedSingleton instance;
    
    private DoubleCheckedSingleton() {}
    
    public static DoubleCheckedSingleton getInstance() {
        if (instance == null) {
            synchronized (DoubleCheckedSingleton.class) {
                if (instance == null) {
                    instance = new DoubleCheckedSingleton();
                }
            }
        }
        return instance;
    }
}

静态内部类(Static Nested Class)

利用类加载机制保证线程安全,且延迟初始化

public class StaticNestedSingleton {
    private StaticNestedSingleton() {}
    
    private static class Holder {
        static final StaticNestedSingleton INSTANCE = new StaticNestedSingleton();
    }
    
    public static StaticNestedSingleton getInstance() {
        return Holder.INSTANCE;
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到