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

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

代码示例:

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;
    }
}

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

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

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

相关推荐
Sgf2274 分钟前
ES8(ES2017)新特性完整指南
开发语言·javascript·ecmascript
IAUTOMOBILE11 分钟前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
hutengyi12 分钟前
PostgreSQL版本选择
java
皮皮林55118 分钟前
重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR
java·intellij idea
好大哥呀30 分钟前
C++ Web 编程
开发语言·前端·c++
MX_935931 分钟前
SpringMVC请求参数
java·后端·spring·servlet·apache
ID_1800790547337 分钟前
小红书笔记评论 API,Python 调用示例与完整 JSON 返回参考
java·开发语言
lifewange41 分钟前
java连接Mysql数据库
java·数据库·mysql
云原生指北1 小时前
命令行四件套:fd-rg-fzf-bat
java·大数据·elasticsearch
南境十里·墨染春水2 小时前
C++ 笔记 友元(面向对象)
开发语言·c++·笔记