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

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

代码示例:

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

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

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

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

相关推荐
油丶酸萝卜别吃4 小时前
utils.js 说明文档
开发语言·javascript·ecmascript
rannn_1116 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
leisoo80976 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
不会代码的小猴7 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
IKUN家族8 小时前
Spring IoC&DI
java·spring·rpc
一只旭宝8 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
山荷枝9 小时前
03-框架--Spring
java·后端·spring
ChaHae-In10 小时前
SpringBoot统一功能处理
java·spring boot·后端
coder!mq10 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding10 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言