首页 > 其他分享 >单例模式——懒汉模式

单例模式——懒汉模式

时间:2023-08-24 13:44:05浏览次数:35  
标签:Singleton LazySingleton 模式 instance 单例 懒汉

1、定义:
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。懒汉式单例模式是指在第一次访问时才创建唯一实例,这种实现方式在实例创建开销较大或者实例使用不频繁时,可以减少不必要的资源开销。但在多线程环境下,懒汉式单例模式的实现需要加上synchronized关键字才能保证线程安全 。
2、例子

点击查看代码
// 单例模式
class Singleton
{
public:
    static Singleton* getInstance()
    {
        if (instance == nullptr)
        {
            instance = new Singleton();
        }
        return instance;
    }

private:
    Singleton() {}
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

    static Singleton* instance;
};

Singleton* Singleton::instance = nullptr;

// 懒汉式单例模式
class LazySingleton
{
public:
    static LazySingleton* getInstance()
    {
        if (instance == nullptr)
        {
            instance = new LazySingleton();
        }
        return instance;
    }

private:
    LazySingleton() {}
    LazySingleton(const LazySingleton&) = delete;
    LazySingleton& operator=(const LazySingleton&) = delete;

    static LazySingleton* instance;
};

LazySingleton* LazySingleton::instance = nullptr;

标签:Singleton,LazySingleton,模式,instance,单例,懒汉
From: https://www.cnblogs.com/charlielee/p/17653945.html

相关文章

  • 设计模式(三)抽象工厂
    一、定义提供一个创建一系列相关或互相依赖对象的接口,而无须指定他们具体的类,抽象工厂模式是一种创建型模式。二、描述抽象工厂比工厂方法的抽象程度更高,通过引入了工厂等级结构,解决了简单工厂模式中工厂类职责太重的原则。为了更好的理解抽象工厂模式,引入两个概念:1、产品等级......
  • Vue【原创】下划线动态效果按钮,一般按钮模式,开关切换模式。
     1.lilo-icon-button一般按钮模式:1<template>2<divclass="icon-button":style="{color:font.color}"@click="onclick">3<i:class="[icon.type]":style="{color:icon.color,font......
  • HadoopYarn模式集群安装
    Hadoop集群安装步骤1.Hadoop集群安装1.1环境说明集群:三台Linux机器(SUSE);JDK1.8(提前下载好对应的tar.gz)Hadoop2.7.2(提前下载好对应的tar.gz)以下所有配置需要在每个主机上进行,但按照本文配置,可配置一个以后复制过去,完全相同,不用修改。1.2同步时......
  • Winform项目中出现 "已经可见的窗体不能显示为模式对话框。在调用 showDialog 之前应
    1问题描述最近做一个winform项目,启动程序弹出的加载进度窗体时,发生如标题所示的异常。2尝试debug根据异常提示,在进度窗体弹出前添加代码Visable=false;--未解决逐步debug调试发现Form弹框运行了2次,由此查出bug所在。由于我是用的单例模式,在Program.cs中运行的还是new......
  • 依赖注入的单例模式对性能的影响及性能优化方法的思考
    摘要: 大概一年前开始在思考构造函数中依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。一般较多公司的项目都使用Autofac 依赖注入(Scoped作用域),但是发现过多的对象产生会消耗 CPU,内存并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用单例(Singl......
  • 某酒管集团-单例模式对性能的影响及思考
    摘要: 大概一年前开始在思考构造函数中依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。一般较多公司的项目都使用Autofac 依赖注入(Scoped作用域),但是发现过多的对象产生会消耗 CPU,内存并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用单例(Singlet......
  • 静态Web服务器-以⾯向对象的模式开发
    步骤1.把提供服务的Web服务器抽象成⼀个类(HTTPWebServer)2.提供Web服务器的初始化⽅法,在初始化⽅法⾥⾯创建socket对象3.提供⼀个启动Web服务器的⽅法,让Web服务器处理客户端请求操作。 示例1importsocket2importthreading34#获取用户请求资源的路径5......
  • Visitor Pattern-访问者模式
    C#中的访问者模式(VisitorPattern)是一种行为型设计模式,它将数据结构和数据操作分离,使得可以在不修改数据结构的前提下定义新的操作。访问者模式的核心思想是将数据结构和数据操作解耦,将数据操作封装到独立的访问者类中。数据结构定义一组元素,每个元素接受访问者的访问并调用相应......
  • Strategy Pattern-策略模式
    C#中的策略模式(StrategyPattern)是一种行为型设计模式,它可以让你定义一族算法,并将每个算法封装起来,使它们可以相互替换,从而使得算法的变化独立于使用算法的客户端。策略模式的核心思想是将算法的定义和使用分离,将不同的算法封装到独立的策略类中。这样,客户端可以根据需求从不同的......
  • 某酒管集团-单例模式对性能的影响及思考
    摘要: 大概一年前开始在思考构造函数中依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。一般较多公司的项目都使用Autofac 依赖注入(Scoped作用域),但是发现过多的对象产生会消耗 CPU,内存并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用单例(Single......