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

设计模式-单例模式

时间:2022-08-19 14:55:08浏览次数:57  
标签:Singleton 模式 instance 实例 static 单例 new 设计模式

单例模式:简单地说就是一个 实例即一个对象,全局只用这一个对象。

  如何保证一个对象呐?

    私有的构造函数,保证外界不能直接new 一个对象,那么就保证了单一性;

  但是只是不让外界new,但是第一个对象怎么来呐?

    那就要在单例中创建一个方法,以用来创造这第一个对象,其他地方想要用,直接调用这个方法即可!

  

 class Singleton
    {
        //单例模式结构:

        private static Singleton instance;

        // 私有构造方法Singleton(),外界不能使用new关键字来创建此类的实例了。

        private Singleton()
        {

        }
        //方法GetInstance(), 此方法是本类实例的唯一全局访问点。

        public static Singleton GetInstance()
        {
            //如实例不存在,则New一个新实例,否则返回已有实例

            if (instance == null)
            {
                instance = new Singleton();
            }
            return instance;

        }
    }

==========以上就是 单例模式的基本 结构

 

  如果在多线程的情况下,单例模式会不会被破坏,创造出多个实例。答案是会的,会出现这种情况,那么如何补救?就需要 加锁了

  

class Singleton
    {
        //单例模式结构:

        private static Singleton instance;

        // 私有构造方法Singleton(),外界不能使用new关键字来创建此类的实例了。


        private static readonly object _object = new object();//创建锁
        private Singleton()
        {

        }
        //方法GetInstance(), 此方法是本类实例的唯一全局访问点。

        public static Singleton GetInstance()
        {
            //如实例不存在,则New一个新实例,否则返回已有实例           

            if (instance == null)
            {
                //现在还不能直接创建,要加锁,让线程一个个进来
                lock (_object) 
                {
                    //一个个进来如果还是  null 的话,就说明确实没有创建实例了
                    if (instance==null)
                    {
                        instance = new Singleton();
                    }
                }
                
            }
            return instance;

        }
    }

  加上锁的话,就更能保证单例模式的运行了

标签:Singleton,模式,instance,实例,static,单例,new,设计模式
From: https://www.cnblogs.com/messi-10/p/16601974.html

相关文章

  • java中23种设计模式
    一、设计模式分类1.设计模式分类  2.设计模式特点单例模式:某个类只能有一个实例,提供一个全局的访问点。简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类......
  • windows自动切换深色模式(夜晚模式)
    windows系统上怎么根据日出日落时间判断切换为深色模式或浅色模式呢?windows系统自带了一个叫做“任务计划程序”的软件。可以通过“开始菜单”中的搜索找到。然后选择“......
  • 心智模式
    人不是被事物本身困扰,而是被关于他们的意见所困扰。人的情绪、思维和行动是一体的。推动人自我发展的内在动机:安全感、自主性和胜任感。 积极的成长型思维:安全感......
  • Servlet特性研究之异步模式
    Servlet只有同步模型是怎样的?异步处理是Servlet3.0版本的重要功能之一,分析异步处理模型之前,先看看同步处理的过程是怎样的:客户端发起HTTP请求一个动态ServletAPI,请求......
  • .NET 异步编程模式 (四)-TAP
    TAP是基于任务的异步模式,在.NETFramework4中引入。TAP取代了APM和EAP,是推荐的异步编程模式。async/awaitasync和await是为异步编程提供的语法糖,方便我们快捷......
  • 报价模式的采购销售模式erp项目系统逻辑和数据库设计
    2022年8月10日13:56:22传统的电商模式和报价模式对比报价模式是先报价,在去采购对应的产品或者原料,在入库,出库给购买人,顺序不同,导致整个数据库接口不同举个例子在有色金......
  • ZYNQ系列VITIS不支持JTAG模式的核心板烧录方法
    2-1:系统环境变量修改    对于ZYNQ或者MPSOC下载QSPI程序需要用到2个文件    Boot.bin文件:改文件由fsbl.elf文件、fpga.bit文件、应用程序.elf文件合成  ......
  • ACM模式细节
    牛客网的ACM模式需要自己写输入输出,在这里简单记录一下:基本答题框架:importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Sc......
  • 享元模式
    1.定义运用共享技术有效地支持大量细度类的对象。2.类图  3.例子池的应用,比如数据库连接池,线程池等......
  • 学生数据提交模式的探索-《教育行业核心数据流程管理平台》开发随笔
    学生数据提交方式有以下几种方式:方法1.通过第三方问卷星,平台批量采集学生的信息,然后通过问卷星的管理员后台,导出数据至Excel文件。此Excel的文件格式要符合《教育行业核......