01 设计模式--单例模式

news/2024/9/23 9:28:30/

1. 单例模式

单例模式有两种实现方式:

1.1 饿汉模式(Eager Initialization):在类加载时就创建单例实例,无论是否需要使用该实例。

饿汉模式在类加载时就创建单例实例,无论是否需要使用该实例。

饿汉模式的优点是实现简单,线程安全,因为实例在类加载时就被创建。

缺点是可能会导致资源浪费,因为即使该单例实例从未被使用,也会在程序启动时被创建。

public class Singleton {private static Singleton instance = new Singleton(); // 在类加载的时候就创建实例private Singleton() {}  // 将构造方法私有化public static Singleton getInstance() {  // 提供一个公有的静态方法,以获取实例return instance;}
}

1.2 懒汉模式(Lazy Initialization)

懒汉模式在需要时才创建单例实例,例如使用 get 创建。

懒汉模式的优点是节省资源,因为实例在需要时才被创建

缺点是在多线程环境下需要考虑线程安全问题,需要额外的同步措施来确保只有一个实例被创建。


public class Singleton {private static Singleton instance; // 声明一个静态的、私有的该类类型的变量,用于存储该类的实例private Singleton() {} public static Singleton getInstance() { // 提供一个公有的静态方法,以获取实例if (instance == null) { // 第一次调用该方法时,才真正创建实例instance = new Singleton(); }return instance;}
}

http://www.ppmy.cn/news/1460258.html

相关文章

揭秘高效引流获客的艺术:转化技巧大公开

在数字化营销的海洋中,每个企业都如同一艘努力航行的船,而流量便是推动船只前行的风帆。如何有效吸引并获取潜在客户,即所谓的“引流获客”,已成为企业市场营销策略中不可或缺的一环。本文将详细探讨几种实用且高效的引流获客技巧…

程序员工作中常见问题,你遇到过几个?

在赛博朋克2077玩后感中,我提到,即便是在严谨的机制下,依然可能出现让人匪夷所思或是贻笑大方的问题。 那么今天,就以后端程序员的视角,盘点下从设计开发到上线的常见问题,看看大家中过几个。 01 设计与开…

鸿蒙应用开发者高级认证指南及参考资料整理(含详细参考答案)

如何报名鸿蒙应用开发者高级认证 报名链接:点击这里进行报名。报名步骤: 点击上述链接进入报名页面。选择“立即报名”。在课程内容中找到“HarmonyOS应用开发者高级认证”,点击进入。点击“参加考试”,随后即可开始考试。考试注意事项 实名认证:考试前,请务必完成实名认…

前端怎么用 EventSource? EventSource怎么配置请求头及加参数? EventSourcePolyfill使用方法

EventSource EventSource 接口是 web 内容与服务器发送事件通信的接口。 一个 EventSource 实例会对 HTTP 服务器开启一个持久化的连接,以 text/event-stream 格式发送事件,此连接会一直保持开启直到通过调用 EventSource.close() 关闭。 EventSource…

【C++杂货铺铺】AVL树

目录 🌈前言🌈 📁 概念 📁 节点的定义 📁 插入 📁 旋转 1 . 新节点插入较高左子树的左侧---左左:右单旋 2. 新节点插入较高右子树的右侧---右右:左单旋 3. 新节点插入较高左…

每日OJ题_记忆化搜索①_力扣509. 斐波那契数(四种解法)

目录 记忆化搜索概念和使用场景 力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 记忆化搜索概念和使用场景 记忆化搜索是一种典型的空间换时间的思想,可以看成带备忘录的爆搜递归。 搜索的低效在于没有能够…

Chrome的常用操作总结

Chrome的常用操作总结 最近的自己真的好忙啊,好久真好久没有写博客了,今天我就趁着周末的这段时间总结一下最近自己的用的Chrome浏览器常用的命令 不得不说: 就是特么的丝滑!吊打一切浏览器(不接受反驳哈哈哈)因为反驳我也不听嘻嘻 用好快捷键,就是事半功倍!!!重要的事儿说一遍…

2024年最新消息预知在线客服系统源码

源码说明: 下 载 地 址 : runruncode.com/php/19755.html - 新增消息预知功能,可以提前查看即将收到的消息。 - 新增消息撤回功能,可以撤回已发送的消息。 - 新增消息已读未读标记,可以标记消息为已读或未读。 -…