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

单例模式

时间:2024-06-30 21:19:57浏览次数:16  
标签:private instance 模式 单例 SingletonDemo public 加载

Java单例模式

​ 核心: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

​ 创建型模式,这里写的最简单的两个。其实还有双重检测锁式(由于JVM底层内部模型原因,偶尔会出问题。不建议使用); 静态内部类式(线程安全,调用效率高。 但是,可以延时加载); 枚举单例(线程安全,调用效率高,不能延时加载)

一、饿汉式

public class SingletonDemo {
    //类初始化时,立即加载(没有延时加载的优势)。这个对象加载类时,天然的线程安全!
    private static SingletonDemo instance = new SingletonDemo();	//加载类时就进行初始化
    
    private SingletonDemo() {}
    
    //方法没有同步调用效率高
    public static SingletonDemo getInstance() {
        return instance;
    }
}

二、懒汉式

public class SingletonDemo {
    
    private static SingletonDemo instance;
    
    private SingletonDemo(){}
    
    //需要synchronized关键字 防止重复构建对象,就是会降低并发时的效率
    public static synchronized SingletonDemo getInstance() {
        if(instance == null) {	//延迟加载
            instance = new SingletonDemo();
        }
        
        return instance;
    }
}

标签:private,instance,模式,单例,SingletonDemo,public,加载
From: https://www.cnblogs.com/fragmentary/p/18276975

相关文章

  • [图解]企业应用架构模式2024新译本讲解17-活动记录1
    100:00:01,070-->00:00:04,180下一个我们要说的就是200:00:04,190-->00:00:06,740活动记录模式了300:00:07,640-->00:00:11,210同样是数据源架构模式400:00:12,300-->00:00:18,480里面的一个,活动记录500:00:18,490-->00:00:21,710我们看这里,定义,active......
  • 设计模式II
    建造者模式在建造者模式中,通常会定义以下接口/抽象类:抽象建造者接口(Builder):定义了构建产品各个部分的抽象方法,通常包括创建产品和设置产品各个部分的方法。具体建造者类将实现这个接口来构建产品的各个部分。产品接口(Product):定义了产品的抽象接口,通常包括产品的属性和行为。具......
  • 结构型设计模式
    适配器模式需求方法M1。但已经存在一个方法M2能实现需求功能,引入子类来覆盖M1方法(M1方法中调用已有的M2方法)。这个新子类就是适配器将已有的方法转换为需求的另一种方法(一般由于方法名差异;参数不同)这一模式中的“接口”是广义接口,可代指一个/一组方法集合优点:无需修改已有内容......
  • 设计模式-观察者模式
    观察者模式观察者模式(ObserverPattern),又叫发布-订阅(Publisher/Subscribe)模式,模型-视图模式,源-监听器模式或从属者模式。定义一种一对多的依赖关系,一个主题对象可以同时被多个监听者同时监听,使得每当主题对象状态发生变化时,所有依赖于它的对象都会得到通知并被自动更新。属于行为......
  • [最全]设计模式实战(总序)
    最近一段时间,读完了《Android源码设计模式-解析与实战》和《大话设计模式》这两本经典设计模式相关书籍,撰写相关笔记。每种设计模式将从以下方式聊聊:1.是什么(What,即定义);解决什么问题(Why,即使用场景)2.如何使用(How,即最简UML图+Java代码)3.生活场景举例(贴近生活,更易理解)4.......
  • [模式识别复习笔记] 第9章 神经网络及BP算法
    1.基本概念1.1神经元神经网络是很多的神经元模型按照一定的层次结构连接起来所构成的。1.2激活函数\(\text{ReLU}\)函数:修正线性单元ReLU,是一种人工神经网络中常用的激活函数。\[\text{ReLU}(x)=\max(0,x)\]\(\text{sgn}\)阶跃函数:它将输入值映射为......
  • (超详细,超易懂)设计模式(三):抽象工厂模式,灵山派系谁上位
            如果你也喜欢C#开发或者.NET开发,可以关注我,我会一直更新相关内容,并且会是超级详细的教程,只要你有耐心,基本上不会有什么问题,如果有不懂的,也可以私信我加我联系方式,我将毫无保留的将我的经验和技术分享给你,不为其他,只为有更多的人进度代码的世界,而进入代码的世界......
  • 《分析模式》漫谈04- 反射·电动车周某
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集《分析模式》第2章里面有这么一段话:里面提到两个词,一个是reflection,一个是mapping。2004中译本的翻译是这样的:这个翻译把reflection和后面的similar合并在一起称为“相互对应”,......
  • 《分析模式》“鸦脚”表示法起源,Everest、Barker和Hay
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集《分析模式》这本书里面用的并不是UML表示法。作者MartinFowler在书中也说了,该书写于1994-1995年,当时还没有UML。作者在书中用的是一种常被人称为“鸦脚”的表示法。 有的同学会有......
  • 【python】在 Linux 中使用webdriver有头模式
    用webdriver模拟浏览网页时,可以使用无头模式,尤其在linux系统中,因为linux没有图形化界面,使用有头模式一般会报错。chrome_options.add_argument("--headless")#设置Chrome无头模式但是有些网站的反爬措施比较严格,使用无头模式会被识别出来,直接拒绝访问,这时候,就得使用有头......