单例模式:确保全局唯一实例

单例模式确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景(如配置管理器、数据库连接池)。

代码示例:

java 复制代码
import java.util.stream.IntStream;

public class ConfigManager {
    public static void main(String[] args) {
        IntStream.range(0,10).parallel()
                .forEach(i -> System.out.println(ConfigManager.getInstance().getConfig("a")));
    }

    // 1. 私有静态实例
    private static volatile ConfigManager instance;

    // 2. 私有构造方法
    private ConfigManager() {}

    // 3. 双重检查锁定获取实例
    public static ConfigManager getInstance() {
        if (instance == null) {
            synchronized (ConfigManager.class) {
                if (instance == null) {
                    instance = new ConfigManager();
                }
            }
        }
        return instance;
    }

    // 业务方法示例
    public String getConfig(String key) {
        return "Value of " + key;
    }
}

**使用场景:**配置文件管理、日志记录器、线程池、连接池

**优点:**节省内存、避免重复创建

**缺点:**需处理多线程安全问题;过度使用会导致代码耦合

相关推荐
艾莉丝努力练剑3 分钟前
【QT】界面优化:QSS
linux·运维·开发语言·网络·qt·计算机网络·udp
一只积极向上的小咸鱼4 分钟前
TOML、JSON、YAML、INI 配置文件格式总结
java·服务器·json
莫逸风5 分钟前
【AgentScope】4.会话(Session)详解
java·llm·agent·agentscope
jieyucx5 分钟前
站在云原生高并发天花板:拆解 Go 语言 GMP 模型与 I/O 多路复用的神级配合
开发语言·云原生·golang
caimouse5 分钟前
Reactos 第 3 章 内存管理 — 【下篇】换出、Section、池
c语言·开发语言·windows·架构
无忧.芙桃9 分钟前
debug实例与分析(一)
开发语言·c++·算法
zmzb010310 分钟前
Python课后习题训练记录Day124
开发语言·python
geovindu11 分钟前
python: Broadcast Pattern
开发语言·python·设计模式·广播模式
吴阿福|一人公司14 分钟前
类变量和实例变量的命名规范有哪些具体的例子?
java·开发语言
eddietao17 分钟前
什么是 fail-fast?什么是 fail-safe?
java·面试