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

设计模式之单例模式-----实现单例模式的五种方式

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() {}public static synchronized LazySingleton getInstance() {if (instance == null) {instance = new LazySingleton();}return instance;}
}

3. 双重检查锁(Double-Checked Locking)

public class DCLSingleton {private volatile static DCLSingleton instance;private DCLSingleton() {}public static DCLSingleton getInstance() {if (instance == null) {synchronized (DCLSingleton.class) {if (instance == null) {instance = new DCLSingleton();}}}return instance;}
}

4. 静态内部类(Initialization-on-demand Holder)

public class HolderSingleton {private HolderSingleton() {}private static class Holder {private static final HolderSingleton INSTANCE = new HolderSingleton();}public static HolderSingleton getInstance() {return Holder.INSTANCE;}
}

5. 枚举(Enum Singleton)

public enum EnumSingleton {INSTANCE;public void doSomething() {// 业务方法}
}

相关文章:

  • 多模态大语言模型arxiv论文略读(130)
  • 人力资源战略重构,AI驱动高质量发展论坛顺利召开
  • @annotation:Spring AOP 的“精准定位器“
  • Qt5.15.2 可执行程序发布
  • Rust 学习笔记:关于 Unsafe Rust 的练习题
  • Java八股文——消息队列「场景篇」
  • VSCode1.101.1Win多语言语言编辑器便携版安装教程
  • 【工具教程】识别PDF中文字内容,根据文字内容对PDF批量重命名,提取识别PDF内容给图片重新命名的操作步骤和注意事项
  • uniapp评价组件
  • 从生活场景学透 JavaScript 原型与原型链
  • 微信小程序扫码添加音频播放报错{errCode:10001, errMsg:“errCode:602,err:error,not found param“}
  • VR 看房:突破成长痛点,展望未来趋势
  • YOLOv5 自定义模型 Android 部署完整指南
  • C++11 右值引用(Rvalue Reference)
  • uni-app-配合iOS App项目开发apple watch app
  • bit sbit sfr的区别
  • 【Pandas】pandas DataFrame squeeze
  • RISC-V物联网关,支持鸿蒙,T-Thread实时系统
  • Android 中 解析 XML 字符串的几种方式
  • 如何使用 Dockerfile 创建自定义镜像
  • 开发网站类型/微网站
  • 网站首页图片怎么更换/深圳竞价托管
  • 阿里云自己做网站/一个企业该如何进行网络营销
  • 方维制网站/最好看免费观看高清大全
  • 广州外贸企业网站建设/百度搜索链接
  • 电子商务网站建设思维导图/社交网络的推广方法