首页 > 其他分享 >SingletonPattern-单例模式

SingletonPattern-单例模式

时间:2023-08-02 16:11:45浏览次数:29  
标签:Singleton 模式 instance 实例 static private 单例 public SingletonPattern

在C#中,单例模式(Singleton Pattern)用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。单例模式常用于需要限制某个类只能创建一个对象的场景,例如数据库连接、日志记录器等。

  1. 懒汉式(Lazy Initialization)

    这种实现方式使用了双重检查锁定(双IF加锁),即在获取实例前先检查实例是否已经存在,如果不存在再使用锁进行同步。这种方式延迟了实例的创建,只有在需要使用实例时才会进行创建。该实现是线程安全的,并且能够在多线程环境下保证只有一个实例。

    public class Singleton
    {
        private static Singleton instance;
        private static readonly object lockObj = new object();
    
        private Singleton() { }
    
        public static Singleton Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (lockObj)
                    {
                        if (instance == null)
                        {
                            instance = new Singleton();
                        }
                    }
                }
                return instance;
            }
        }
    }
  2. 饿汉式(Eager Initialization)
    这种实现方式在类加载时就创建了实例,所以称为饿汉式。在多线程环境下也能保证只有一个实例,但可能会在程序启动时就创建实例,有一定的内存开销。
    public class Singleton
    {
        private static readonly Singleton instance = new Singleton();
    
        private Singleton() { }
    
        public static Singleton Instance
        {
            get { return instance; }
        }
    }
  3. 静态构造函数(Static Constructor)
    这种实现方式利用了C#的静态构造函数,在第一次使用Singleton类时执行静态构造函数并创建实例。它也能保证在多线程环境下只有一个实例。
    public class Singleton
    {
        private static readonly Singleton instance;
    
        private Singleton() { }
    
        static Singleton()
        {
            instance = new Singleton();
        }
    
        public static Singleton Instance
        {
            get { return instance; }
        }
    }

标签:Singleton,模式,instance,实例,static,private,单例,public,SingletonPattern
From: https://www.cnblogs.com/ZHIZRL/p/17600944.html

相关文章

  • 构建以人为本的全面预算管理模式
    在财务分析的转型过程中,系统、预测、过程和大数据等都发挥着重要的作用,除此之外,我们往往会忽视一个更重要的因素——人在成功的转型项目中更是发挥着核心作用。企业大部分转型之旅都与人有关,通常人可以发挥创造力以更好地为企业服务。如今,数据质量正以难以置信的速度得到改善,企业运......
  • Java单例模式
    单例模式线程安全的四种创建方式静态代码块,静态内部类,双重检锁,枚举模式代码展示静态代码块privatestaticfinalSingletonDemoSINGLETON_DEMO;static{SINGLETON_DEMO=newSingletonDemo();}privateSingletonDemo(){}publicstaticSingletonDemoget......
  • 基于B/S模式的电子病历系统,覆盖电子病历模板制作到管理使用的整个流程
    基于B/S模式的电子病历系统,覆盖电子病历模板制作到管理使用的整个流程电子病历EMR(ElectronicMedicalRecord)也称为计算机化的病历或基于计算机的病人记录CMR(ComputerBasedMdicalRecord),它是用电子设备保存、管理和传输数字化的病人医疗记录,是取代手写纸张的病历。对电子病历一致......
  • Java设计模式--装饰器模式
    Java设计模式--装饰器模式一、问题背景在项目场景中,有这样一个需求,需要对录入的加班进行规则校验,包括但不限于,对加班的录入时间进行检查,对录入的加班类型进行检查,对加班日期的班次进行对比检查,对潜入系统的时长进行对比检查等等。具体来说,就是对一条加班记录,进行多种规则的检查......
  • 【设计模式】适配器模式Adapter:处理不同 API 接口的兼容性
    (目录)适配器模式适配器模式(AdapterPattern)是作为两个不兼容的接⼝之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独⽴接⼝的功能。在某些时候,客户期望获得某种功能接⼝但现有的接⼝⽆法满⾜客户的需求,例如美国的正常供电电压为110V,⼀个中国⼈带了⼀款中国制造......
  • 适配器模式
    分类类适配器模式对象适配器模式类适配器是由继承关系构成,对象适配器是聚合或组合的关系构成所以类适配器耦合性较高,使用较少角色/结构目标接口:我们中国的手机充电器适配者类:欧洲那边已有的欧洲标准的插座适配器类:可以把我们的手机充电器调整到可以用欧洲插座的适......
  • Java设计模式
    #Java设计模式GoF(最先开始着手进行设计模式分类整理工作)对设计模式的定义是:设计模式是在特定的环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。一、面向对象设计的七大原则1.1单一职责原则定义:一个对象应该只包含单一的职......
  • 沁恒触摸主动屏蔽与互感模式PCB Layout说明
    沁恒MCU触摸按键主动屏蔽模式与互感模式Layout说明主动屏蔽模式      主动屏蔽模式是指利用MCU的专用引脚,启用屏蔽功能,对各触摸检测通道做隔离,主动屏蔽主要作用有:      1)减小电路板上的互电容,从而减小触摸传感器基础电容值,增加触摸相对变化率;  ......
  • 2023模式识别课程师资培训会重磅招募
    人工智能已成为国际竞争的新焦点,也是我国的国家战略。《模式识别》是面向人工智能方向主干课程,对人工智能人才培养及人工智能专业建设具有举足轻重的作用。为推动人工智能专业人员的培养,重点领域模式识别课程群虚拟教研室、北京航空航头大学、北京邮电大学、北京百度网讯科技有限公......
  • 汇编-彩色字符模式显示缓冲区结构
      80×25彩色字符模式显示缓冲区的结构:1.内存地址空间中,B8000H~BFFFFH共32KB的空间,为80×25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上2.在80×25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256种属性(背景色、前景......