当前位置: 首页 > news >正文

单例模式(Singleton Pattern)详解

单例模式(Singleton Pattern)详解


1. 定义与核心目标

单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。核心目标:

  • 控制实例数量:防止重复创建对象,节省资源。
  • 统一管理共享资源:如配置管理、数据库连接池、日志处理器等。

2. 实现方式及对比

(1) 饿汉式(Eager Initialization)
  • 特点:类加载时立即创建实例,线程安全但可能浪费资源。
  • 代码示例
    public class EagerSingleton {private static final EagerSingleton instance = new EagerSingleton();private EagerSingleton() {} // 私有构造方法public static EagerSingleton getInstance() {return instance;}
    }
    
  • 优点:简单、线程安全。
  • 缺点:实例在类加载时创建,即使未使用也会占用内存。

(2) 懒汉式(Lazy Initialization)
  • 特点:延迟实例化,首次调用时创建对象。

  • 基础版(非线程安全)

    public class LazySingleton {private static LazySingleton instance;private LazySingleton() 

相关文章:

  • 学习日志08 java
  • 中大型水闸安全监测系统解决方案
  • AB Download Manager v1.5.8 开源免费下载工具
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(22):复习
  • C/C++实践(八)C++ Sort函数详解,从基础到进阶
  • MySQL MCP 使用案例
  • Mybatis 嵌套子查询动态SQL编写
  • QT6 源(103)篇三:阅读与注释 QPlainTextEdit,给出源代码
  • Mysql、Oracle、Sql Server、达梦之间sql的差异
  • 搭建游戏云服务器的配置要求包括哪些条件?
  • HOW - React NextJS 的同构机制
  • WebRTC中的几个Channel
  • 【网络编程】十、详解 UDP 协议
  • Python教程(五)——模块
  • c/c++的opencv的图像预处理讲解
  • MapReduce Shuffle 全解析:从 Map 端到 Reduce 端的核心数据流​
  • Spring bean 的生命周期、注入方式和作用域
  • C41-为什么要用指针
  • ubuntu环境下 基于Python 打包的 批量命令行可视化操作工具 GUI
  • Vue3项目使用ElDrawer后select方法不生效
  • 新修订的《餐饮业促进和经营管理办法》公布,商务部解读
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 泉州围头湾一港区项目炸礁被指影响中华白海豚,官方:已叫停重新评估
  • “家国万里时光故事会” 举行,多家庭共话家风与家国情怀
  • 《上海市建筑信息模型技术应用指南(2025版)》发布
  • 中国乒协坚决抵制恶意造谣,刘国梁21日将前往多哈参加国际乒联会议