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

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

代码示例:

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

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

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

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

相关推荐
_bong10 分钟前
python语言中的常用容器(集合)
开发语言·python
懒惰蜗牛10 分钟前
Day24 | Java泛型通配符与边界解析
java·后端·java-ee
HezhezhiyuLe13 分钟前
MAC idea 环境变量设置失效
java·macos·intellij-idea
布伦鸽26 分钟前
C# WPF DataGrid 数据绑定时的单元格编辑类型模板
开发语言·c#·wpf
fatfishccc32 分钟前
(七)API 重构的艺术:打造优雅、可维护的 API
java·驱动开发·intellij-idea·软件研发·后端开发·代码重构·api重构
tqs_1234533 分钟前
分sheet写入excel
开发语言·python·算法
Eoch7733 分钟前
从买菜到秒杀:Redis为什么能让你的网站快如闪电?
java·后端
Roc-xb33 分钟前
解决Compile Run插件运行c/c++中文乱码问题
c语言·开发语言·c++
0wioiw034 分钟前
Esp32基础(①②大模型控制)
开发语言·python
eqwaak041 分钟前
Pillow高级实战案例:图像处理的进阶应用
开发语言·python·科技·语言模型·pillow