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

单例模式

时间:2024-08-01 16:52:42浏览次数:13  
标签:return private INSTANCE static 模式 单例 LHPatternThreadSafeDoubleCheck EHPatternIns

在整个系统中,只能存在一个对象实例,也就是说只能new一次

饿汉式:

在系统启动后,就会实例化一个对象(不管用不用得到,我先买了再说)

  • 缺点:造成内存浪费(如果从来没有使用过)

  • 优点:不会造成线程安全的问题

class EHPatternInstance1{
    private final static EHPatternInstance1 INSTANCE = new EHPatternInstance1();
    private EHPatternInstance1(){

    }
    public static EHPatternInstance1 getInstance(){
        return INSTANCE;
    }
}

  

懒汉式:

在需要用到的时候才进行实例化(作业等老师快要检查了才做)

  • 优点:节省内存,如果永远不会用到,则将不会被创建

  • 缺点:需要考虑线程安全问题

class LHPatternThreadUnSafe{
    private static LHPatternThreadUnSafe INSTANCE;
    private LHPatternThreadUnSafe(){

    }

    public static LHPatternThreadUnSafe getInstance(){
        if (INSTANCE == null) {
            INSTANCE = new LHPatternThreadUnSafe();
            return INSTANCE;
        }
        return INSTANCE;
    }
}

 

双检锁:

/**
 * 同步代码块 双重检查  锁住当前类,保证同一时间只有一个实例被创建
 */
class LHPatternThreadSafeDoubleCheck{
    private static LHPatternThreadSafeDoubleCheck INSTANCE;
    private LHPatternThreadSafeDoubleCheck(){

    }

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

 

标签:return,private,INSTANCE,static,模式,单例,LHPatternThreadSafeDoubleCheck,EHPatternIns
From: https://www.cnblogs.com/darkb4dawn/p/18336212

相关文章

  • 适配器模式
    适配器模式(AdapterPattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作适配器继承适配对象,并实现适配目标所有的方法 国标接口(适配目标)publicinterfaceNationalStandard{voiduse()......
  • Calico VXLAN 模式
    CalicoVxLAN模式一、环境信息主机IPubuntu172.16.94.141软件版本docker26.1.4helmv3.15.0-rc.2kind0.18.0clab0.54.2kubernetes1.23.4ubuntuosUbuntu20.04.6LTSkernel5.11.5内核升级文档二、安装服务kind配置文件......
  • Zabbix监控模式及proxy代理
    一、zabbix主动与被动监控模式被动模式和主动模式都是相对于agent客户端而言的主动模式:客户端主动将数据发给server或者proxy被动模式:server或者proxy主动去找客户端索要数据1.被动模式默认是被动模式被动模式是说zabbixagent被动的接受zabbixserver周期性发送......
  • 单例设计模式的懒汉式和饿汉式以及它们的区别
    单例模式:也叫单子模式,属于“创建模式”一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例类一个最重要的特点:类的构造方法是私有的。何时使用:系统全局有且只有一个实例。单例模式的懒汉式:publicclassSingle{//需要将变量定义成......
  • 从扫描的 pdf 中提取设计模式
    我有一份大约650页的扫描版pdf。每页都包含一些图案(花朵、几何图案等)。我的目标是从pdf中提取这些模式。供您参考,这是pdf中的一页我当前的解决方案涉及使用opencv检测轮廓并提取图案。但是,该解决方案并不能处理所有情况。该pdf每页包含不同数量的图像,并且......
  • kubernetes更改nodePort模式下的默认端口范围
    使用nodePort模式,官方默认范围为30000-32767,详见Service官方文档。NodePort类型如果将type字段设置为NodePort,则Kubernetes控制平面将在–service-node-port-range标志指定的范围内分配端口(默认值:30000-32767)。每个节点将那个端口(每个节点上的相同端口号)代理到您的服务......
  • 设计模式-适配器模式( Adapter Pattern)
    设计模式-适配器模式(AdapterPattern)  概要   记忆关键词:转换,兼容接口  定义:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。  分析:在适配器模式中,Cilent调用Adapter以获得相应功能,Adapter扩......
  • 设计模式-外观模式(Facade)
    设计模式-外观模式(Facade)  概要   记忆关键词:对外统一接口  定义:为了是复杂的子系统更容易被使用,应当为子系统的众多接口提供一个简洁的高层接口。  分析:外观模式是一种结构型模式,它为子系统的众多接口提供了统一的高层接口,是子系统更容易使用。  外观模式结......
  • 技术干货|如何轻松实现小型化超构表面天线的特征模式分析和设计?
    摘要无线通信技术的迅速发展对天线小型化提出了苛刻的要求。本文介绍了一种小型化超构表面天线的设计,该天线由四层等间距平行放置的电磁超构表面组成,每层超构表面由3×3的方形贴片组成的阵列组成。文章基于Feko对该天线进行了特征模式分析(CMA),并通过特征模式的近、远场和表面......
  • 设计模式 单例模式
    双重检查锁packagecom.fh.design_mode.singleton.double_check_lock;importlombok.SneakyThrows;importjava.util.concurrent.TimeUnit;/***双重检查锁*/publicclassSingletonTest{publicstaticvoidmain(String[]args){for(inti=1;i......