首页 > 其他分享 >单例模式的N种写法

单例模式的N种写法

时间:2023-06-25 20:36:10浏览次数:37  
标签:时才 模式 优点 线程 单例 缺陷 写法

1. 饿汉式

优点:写法简单,线程安全

缺陷:占用内存高,对象还没有被使用已经被创建出来了。

2. 懒汉式

优点:写法简单,对象使用时才被创建。

缺陷:线程不安全。

3. 加synchronized 

优点:写法简单,对象使用时才被创建。

缺陷:接口性能下降明显。

4. 双重检查

优点:对象使用时才被创建。

缺陷:写法开始变复杂,线程其实还是不安全。

5. volatile(防止指令重排序)

优点:对象使用时才被创建。

缺陷:写法变复杂,性能进一步下降。

6. 内部类

优点:写法简单,线程安全,节约资源

缺陷:序列化或者反射会破坏单例。

 

标签:时才,模式,优点,线程,单例,缺陷,写法
From: https://www.cnblogs.com/jssj/p/17503865.html

相关文章

  • 利用chatgpt解决单主机多实例模式Redis主从配置的报错问题:Error condition on socket
    今天在配置redis主从配置时,从实例报错:ErrorconditiononsocketforSYNC:Connectionrefused我是在单体机上配置三个实例,实现redis的一主二从。1.首先,创建三个文件夹,名字分别叫7001、7002、7003(我喜欢将应用安装在tmp下)#进入/tmp目录cd/tmp#创建目录mkdir70017......
  • 迭代器模式
    迭代器模式这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。思考问题:如何实现顺序访问且不知道集合底层表示?例子:迭代接口packageorg.kouhao.design.patterns.迭代模式;/***@authoradmin*/publicinterfaceIterato......
  • 建造者模式
    建造者模式建造者模式(BuilderPattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。解决问题:当一个类的构造函数超过4个,而且某些参数是可选的,我们通常有两个方法来构建他的对象。publicclassCompute......
  • 模板模式
    模板模式在模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。适用场景:一些固定化流程,比如JdbcTemplate.思考问题:为什么用抽象类而不用接口呢?......
  • 责任链模式
    责任链模式责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。使用登录例子:成员定义packageorg.kouhao.design.patterns.责任链模式;/***@auth......
  • VMware中切换命令行和桌面模式
    在虚拟机中,一般通过以下步骤来切换命令行和桌面模式:进入虚拟机中的操作系统。按下Ctrl+Alt+F1键,在虚拟机中切换到命令行模式。输入用户名和密码,登录到命令行模式下的操作系统。在命令行中执行需要的操作,例如安装软件、配置网络等。当需要返回到桌面模式时,可以按下Ctrl+Alt+F......
  • WPF入门教程系列二十九 ——DataGrid使用示例MVVM模式(7)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一) 接上文WPF......
  • 委托及观察者模式
    委托委托(delegate)是一种特殊的类型(class),它可以被认为是一个可以拥有函数引用的类,它的声明规定了它能够持有的函数引用的函数形式,同时它可以存储多个函数引用,并通过自己的方法调用所有注册在它身上的方法(发布者)。理解了观察者模式就理解了委托它的特点在于:委托类型的定义方......
  • vue项目本地启动history路由模式刷新页面404
    背景:之前一直用hash模式,改成history模式后刷新页面404解决:vue.config.js中publicPath:"/"如果是线上服务则还需要后端修改一些配置,见链接点击查看......
  • 大端模式与小端模式简介
    转载文章:《数据在内存中存储的方式:大端模式与小端模式》什么是大端模式,什么是小端模式?所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低......