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

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

代码示例:

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

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

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

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

相关推荐
lhldsg27 分钟前
智慧场馆解决方案小程序开发实战:从架构设计到部署指南
java·小程序·uni-app
卢锡荣32 分钟前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言
Freak嵌入式44 分钟前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活
Casual1 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php
devilnumber1 小时前
Oracle 与 MySQL substr 函数差异总结
java·数据库·mysql·oracle
cfm_29142 小时前
线程池阻塞队列
java·开发语言
xxwxx__2 小时前
C++ list 深度解析:从使用原理到模拟实现
开发语言·c++·list
坐吃山猪2 小时前
【多线程】ThreadPool线程池参数说明
java·网络
Chester_19992 小时前
CSP202303C.LDAP
开发语言·c++·蓝桥杯·stl
奋斗吧程序媛2 小时前
CSV文件导入功能
开发语言·javascript·ecmascript