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

单例模式

时间:2024-10-12 23:11:13浏览次数:9  
标签:Singleton01 Singleton03 private instance static 模式 单例 public

什么是单例模式

保证一个类仅有一个实例,对外提供一个访问方法。

为什么要用单例模式

资源控制,节省内存,资源共享,延迟初始化,易于维护

实现方式

饿汉式

public class Singleton01 {

    private static Singleton01 instance = new Singleton01();

    private Singleton01() {}

    public static Singleton01 getInstance(){
        return instance;
    }
}

懒汉式

public class Singleton02 {

    private static Singleton02 instance;

    private Singleton02() {
    }

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

线程安全的懒汉式

public class Singleton03 {

    private static volatile Singleton03 instance;

    private Singleton03(){}

    public static Singleton03 getInstance(){
        if(instance == null){
            synchronized(Singleton03.class){
                if(instance == null){
                    instance = new Singleton03();
                }
            }
        }
        return instance;
    }
}

枚举

public enum Singleton {
    SINGLETON;
}

参考文章:
https://blog.csdn.net/m0_63653444/article/details/140007103

标签:Singleton01,Singleton03,private,instance,static,模式,单例,public
From: https://www.cnblogs.com/Zun-x/p/18461654

相关文章

  • 3-GPIO八大输出模式 推挽输出 与 开漏输出
    推挽输出与开漏输出GPIO有八大输出模式下图为每个GPIO口的基本结构:通过这张图来学习最右侧是I/O引脚,是从STM32引脚到GPIO口的导线,与其他芯片进行连接的线。芯片内部电路所能承受的电压有限,当未知的静电进入GPIO口,大于所能承受的电压,就会被上方的保护二极管导通,将电......
  • 如果在单例模式中返回share_ptr ???
    背景:接触到一个很有意思的题目:如果在单例模式中返回share_ptr???staticstd::shared_ptr<Singleton>getInstance(); 分析:这个问题的难点在于如果要实现单例,那么一定要把构造函数变成私有的,但是make_shared一定是调用的public的函数。破题思路是:把构造函数变成public,但......
  • iOS 在OC 中使用 AEC 的 ECB、CTR模式加解密
    实用实测过的代码。 AEC加解密网上一大把,简单列举一下。CTR模式,搜索了好多,试用了好几个都是代码不完全参数不对造成无法正常运行加解密。不同模式引用了不同的系统库路径。 调整加解密,修改参数 operation:kCCDecrypt/ kCCEncryptAECCTR模式解密#import<CommonCryp......
  • 理解嵌入式系统中ARM32架构下的电源管理单元(PMU)及节能模式-原理(上)
     电源管理单元(PowerManagementUnit,PMU)是现代电子设备尤其是嵌入式系统中不可或缺的一部分。PMU的主要任务是管理和分配电力资源,确保各个组件在正确的工作电压下运行,同时优化系统的整体能效。PMU通常包含多种功能模块,如稳压器(LDO或DC-DC转换器)、电池充电电路、电量监测电......
  • linux系统epoll的ET/LT模式-附串口接收代码
    LT模式下,读事件触发后,可以按需收取想要的字节数,不用把本次接收到的数据收取干净(即不用循环到recv或者read函数返回-1,错误码为EWOULDBLOCK或EAGAIN);ET模式下,读事件必须把数据收取干净,因为你不一定有下一次机会再收取数据了,即使有机会,也可能存在上次没读完的数据没有及时......
  • 代理模式和委托模式有什么区别
    代理模式(ProxyPattern)和委托模式(DelegationPattern)在软件设计中都是常用的设计模式,但它们的目的和应用场景有所不同。1. 代理模式:目的:代理模式提供了一个代理对象来控制对原对象的访问。它在不直接访问实际对象的情况下,提供了对目标对象的间接访问。应用场景:常用于懒加载......
  • C#设计模式详解:从简单工厂到抽象工厂
    在C#中,简单工厂(SimpleFactory)和抽象工厂(AbstractFactory)是两种常用的设计模式,它们都属于创建型设计模式,用于创建对象而无需在代码中显式指定具体的类。尽管它们的目的相似,但在复杂性和灵活性方面存在显著差异。简单工厂(SimpleFactory)简单工厂模式是一种不属于GoF(四人帮......
  • java单例模式懒汉式 双重校验 关键字volatile
    Volatile关键字的作用Volatile关键字的作用主要有如下两个:1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。2.顺序一致性:禁止指令重排序。不保证原子性一、线程可见性我们先通过一个例子来看看线程的可见性:publicclassVolatileTest{ ......
  • 设计模式11
    packagecom.example.principle.ocp;publicclassApiInfo{privateStringapi;privatelongrequestCount;privatelongerrorCount;privatelongdurationOfSeconds;//privatelongtimeoutCount;publicStringgetApi(){r......
  • tour cpp: std::variant 实现无继承层次的访问者模式
    std::variant是基于模板而实现的一种包括了一个标志位的高级union对象;可以完全替代如下场景:structst{inttype;unionun{inti;floatf;};};#include<iostream>#include<variant>template<class...base>structoverloaded:bas......