今日代码大赏 | 懒汉式单例模式

在深入探索设计模式的旅程中,单例模式无疑是一个不可忽视的重要概念。单例模式的核心目的在于确保一个类在其生命周期内只有一个实例存在,并提供一个全局访问点,以便外部代码能够方便地获取这一唯一的实例。

单例模式根据其实现方式的不同,可以分为饿汉式和懒汉式两种。继上次介绍了饿汉式单例模式后,今天我们来详细了解一下懒汉式单例模式。

有需要回顾 Java 实现饿汉式单例模式的同学,可以点击下方文章标题,直接跳转文章哦!

Java 实现饿汉式单例模式

懒汉式单例模式的特点是在实例化对象时会稍显“懒惰”,即只有在真正需要使用到这个实例时,才会去创建它。这种方式避免了在类加载时就创建实例可能带来的资源浪费问题。

下面是使用 Java 实现懒汉式单例模式的示例代码:

public class LazySingleton {
    private static LazySingleton instance;

    private LazySingleton() {}

    public static synchronized LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}

在上述代码中,我们首先定义了一个静态变量 instance 用于存储单例对象。构造函数被设置为私有,确保外部无法直接通过构造函数创建新的实例。getInstance 方法则提供了一个全局访问点,当我们第一次调用这个方法时,会创建一个新的实例,并将其赋值给instance变量。之后的调用都会返回这个已经创建的实例。

值得注意的是,为了避免多线程环境下的并发问题,我们在 getInstance 方法上加上了 synchronized 关键字,确保了每次创建实例时的线程安全性。

懒汉式单例模式的优点在于它实现了延迟加载,只有当实例真正被需要时才会进行创建,这在一定程度上节省了资源。然而,缺点是在多线程环境下,频繁的同步操作可能会导致性能问题。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/06wdec

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

如果你对其他设计模式的实现感兴趣,或者有任何关于编程的问题,欢迎在评论区留下你的见解和疑问。

往期推荐

今日代码大赏 | Python 实现二分查找算法

今日代码大赏 | Python 实现归并排序算法

今日代码大赏 | Java 实现二分查找算法

今日代码大赏 | Java 实现快速排序算法

今日代码大赏 | Java 使用递归反转句子

相关推荐

  • 用 OJ 项目拿下鹅厂,真爽!
  • 跟自己之前的领导聊合作。。
  • 为什么现在的LLM都是Decoder only的架构?
  • 突破数据存储瓶颈!转转业财系统亿级数据存储优化实践
  • QQ 9“傻快傻快”的?!带你看看背后的技术秘密
  • 【研发效能·创享大会-嗨享技术轰趴】-IDCF五周年专场
  • 我调研了一下工业大数据中心用的组件
  • 19K Star大公司都在用的开源电子表格组件
  • 图解浏览器的各种距离
  • 小学生都开始学 Python 了!
  • OpenAI CEO:AI 成本可降至“接近零”;李飞飞团队发布《2024年人工智能指数报告》 | 极客头条
  • 又一个 GPT-4 级 LLM!前谷歌大脑成员初创公司官宣 Reka Core,多模态交互超越 Claude3 Opus
  • 有奖调查 | 2024 中国开发者大调查正式启动!
  • 想当“iPhone杀手”的首款 AI 硬件 Ai Pin 意外“翻车”:看时间似乎成为它唯一正确可做的事情!
  • 买了小米 SU7 ,被公司强制开除!
  • 让玩家全程掌控游戏:自然语言指令驱动的游戏引擎到来了
  • 无向图最小割问题取得新突破,谷歌研究获SODA 2024最佳论文奖
  • 再见!波士顿动力人形机器人Atlas​
  • Meta无限长文本大模型来了:参数仅7B,已开源
  • 首个国产音乐SOTA模型来了!专为中文优化,免费用,不限曲风