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

单例模式

时间:2022-10-10 16:14:24浏览次数:44  
标签:getInstance private instance static 模式 单例 Singleton3

单例模式:

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其他对象提供这一实例。
//懒汉
class Singleton1{
    private static Singleton1 instance = null;
    private Singleton1(){}
    public static Singleton1 getInstance(){
        if (instance != null){
            instance = new Singleton1();
        }
        return instance;
    }
}
//饿汉
class Singleton2{
    private static final Singleton2 instance = new Singleton2();
    private Singleton2(){}
    public static Singleton2 getInstance(){
        return instance;
    }
}
//枚举
class Singleton3{
    private Singleton3(){}
    private enum Singleton{
        INSTANCE;
        private final Singleton3 instance;
        private Singleton(){
            instance = new Singleton3();
        }
        private Singleton3 getInstance(){
            return instance;
        }
    }
    public Singleton3 getInstance(){
        return Singleton.INSTANCE.getInstance();
    }
}
//双重校验锁
class Singleton4{
    private static volatile Singleton4 instance;
    private Singleton4(){}
    public static Singleton4 getInstance(){
        if(instance == null){
            synchronized (instance){
                if (instance == null){
                    instance = new Singleton4();
                }
            }
        }
        return instance;
    }
}

 

标签:getInstance,private,instance,static,模式,单例,Singleton3
From: https://www.cnblogs.com/thh19201420/p/16776045.html

相关文章

  • 关于ansible-根据inventory文件或者不指定主机清单文件列出指定模式下的主机
    首先,我们先得认识一个ansible命令的选项:--list-hosts  outputsalistofmatchinghosts;doesnotexecuteanythingelse 即只是列出匹配到的主机,不执行任何命......
  • 华科隧道切换模式教程
    下面简单介绍下使用,以华科HTTP为例,数据抓取中使用隧道模式获取当前IP(限制1200次/小时)用浏览器访问 ​​http://ip.hahado.cn/simple/current-ip?username=username&pa......
  • [转]SQL标准对schema如何定义?(不同数据库中schema模式的意义)
    原文地址:SQL标准对schema如何定义?-知乎(zhihu.com)SO/IEC9075-1SQL标准中将schema定义为描述符的持久命名集合(apersistent,namedcollectionofdescriptors),如果......
  • 利用MVC设计模式构建GUI(PyQt5版)
    今天介绍一个PyQt5中利用MVC设计模式构建GUI的例子,这个案例来源于《MATLAB面向对象编程——从入门到设计模式(第2版)》第7章内容,关于存取款的GUI工具设计,详情请参考127~160页......
  • 适配器模式java
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。   代码按照图中顺序packagetest8;publicclassAdapterimplementsCat,Dog......
  • 桥接模式
    用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。   ////Createdby54417on2022-10-06.//#include<iostream>usingnam......
  • 建造者模式(二)
    #include<iostream>#include<string>usingnamespacestd;//产品类——Computer类classComputer{private:stringCPU;stringRAM;stringHard;......
  • ajax 提交form表单例子
    (前端)<inputtype="submit"onclick="answersSubmit()"value="提交答案"/></div></form>(ajax)//以下为提交答案functionanswersSubm......
  • 一起学习设计模式:备忘录模式——软件的“后悔药”
    备忘录模式——软件的“后悔药”备忘录是一种行为设计模式,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态,并将其保存下来。备忘录模式就像是软件中的“后悔药......
  • 单例模式C++
    [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。  #include<iostream>#include<string>#include<string.h>usingnamespac......