首页/开发/代码质量与评审速查/单例模式 Singleton(创建型)
设计原则与模式62 条

单例模式 Singleton(创建型)

保证一个类仅有一个实例并提供全局访问点:适合进程内共享的配置、连接池等;但全局状态会带来隐藏依赖与测试困难,多数场景用依赖注入持有单实例更可控。

意图唯一实例 + 全局访问
实现要点私有构造、惰性/急切初始化、线程安全
替代容器单例(DI 注册一个实例)

Java 静态内部类实现

Java 静态内部类实现
class Config {
    private Config() {}
    private static class Holder {
        static final Config INSTANCE = new Config();
    }
    static Config instance() { return Holder.INSTANCE; }
}
单例的「唯一」作用域要写清:每进程唯一还是每容器唯一,集群下天然不唯一。

易错点

  • 全局可变状态借单例到处读写:依赖隐藏、测试互相污染
  • 双重检查锁实现遗漏 volatile:并发下可见性错误

数据来源与参考

  • 《设计模式:可复用面向对象软件的基础》(GoF)· Singleton
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌