2. 单例设计模式

通过Logger示例理解单例设计模式 - 第2部分 这一优化基于一个事实:在进程中锁的使用成本很高。因此我们将明智地运用它。注意当前getLogger函数中的一个小细节在当前实现中,每次调用getLogger函数时都会获取锁,这种做法效率低下。实际上,只有在程序启动时才需要加锁。一旦__loggerInstance被设置,后续访问getLogger函数的线程都不会创建新实例——它们只会获取现有的实例。为了优化这一点,我们将在获取锁之前添加一个小检查,确保锁仅用于初始实例化阶段。我们在上述条件中加入了。 阅读详情

单例设计模式

在程序运行过程中,某个类的对象只允许被创建一次
例如:播放器的播放窗口,单点登录


1.单例模式的实现过程:※※※

  • 1.构造方法私有
  • 2.声明静态的,当前类类型的属性
  • 3.声明静态方法: 返回值:当前类类型 方法体内:判断第2步的静态属性是否为null

2.[深入分析单例模式]

根据new的时机不同,分为:

  • 懒汉模式
  • 饿汉模式

3.懒汉模式:

在程序运行后,并没有立即去判断play是否为null,并创建对象,而是在执行到getInstance()方法时,才去判断并创建

package cn.cc.ex1;

/**
 * @author CC
 * 单例模式
 * 懒汉模式实现
 */
public class Play {
	//1.构造方法私有
	private Play() {
		
	}
	//2.声明静态的当前类类型的属性
	private static Play play;
	
	public static Play getInstance() {
		//3.判断静态属性play是否为null
		if (play==null) {
			//4.如果为null,创建对象
			play = new Play();
		}
		return play;
	}
	
	
}

测试类:

package cn.cc.ex1;

/**
 * @author CC
 * 单例模式
 * 懒汉模式实现单例
 */
public class Test01 {
	public static void main(String[] args) {
		//通过单例模式得到Play的对象
		Play play = Play.getInstance();
		Play play1 = Play.getInstance();
		//两个对象的地址一样,所以只创建了一个对象
		System.out.println(play);
		System.out.println(play1);
	}
}

4.饿汉模式:

在程序运行后,立即new 创建对象

package cn.cc.ex1;

/**
 * @author CC
 * 单例模式
 * 恶汉模式实现单例
 */
public class Play2 {
	//1.构造方法私有
	private Play2() {
		
	}
	//2.声明静态的 当前类类型的变量后,进行new
	private static Play2 play = new Play2();
	//3.创建方法
	public static Play2 getInstance() {
		return play;
	}
}

测试类:

package cn.cc.ex1;

/**
 * @author CC
 * 单例模式
 * 恶汉模式实现单例
 */
public class Test02 {

	public static void main(String[] args) {
		Play2 play = Play2.getInstance();
		Play2 play1 = Play2.getInstance();
		System.out.println(play);
		System.out.println(play1);
	}

}


5.两种模式的选择:

  • 如果使用单例对象比较频繁,且在程序运行后立刻就使用单例对象,建议使用饿汉模式
  • 如果使用单例对象的频率较低,为了节省内存空间,建议使用懒汉模式
一文搞懂什么是OTA(空中升级) OTA(Over-The-Air,空中升级)是一种通过无线通信技术实现远程更新设备固件或软件的方法。这项技术广泛应用于现代物联网(IoT)设备、智能手机、汽车、嵌入式系统等领域,提供了一种无需物理连接的便捷更新方式。OTA更新的核心在于使设备能够自动、可靠、安全地从远程服务器获取和应用更新,改善设备性能、添加新功能或修复安全漏洞。 阅读详情

相关推荐

海外跨境电商商城源码-进出口电商平台网站-多语言多商户平台

我们的海外跨境电商系统源码还包括各种功能模块,如用户管理、商品管理、订单管理等。支付管理:与主流支付平台(如Stripe、PayPal等)的集成,支持多种支付方式;订单管理:创建订单、支付订单、取消订单等操作,以及订单状态查询和历史记录;购物车管理:添加商品到购物车、查看购物车、修改购物车中的商品数量等操作;商品管理:商品信息录入、编辑、删除等操作,以及商品分类和搜索功能。客服管理:在线咨询、投诉处理等功能,提供更好的用户服务。用户管理:注册、登录、忘记密码、个人资料。# 检查电子邮件地址是否有效。

柏诣科技的博客 2657

2、单例设计模式

一、单例设计模式       解决一个类在内存中只存在一个对象   二、怎样保证对象的唯一呢?   避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式 三、这三部怎么用代码体现呢?   将构造函数私有化 在类中创建一个本类对象 提供一...

S_壮 141

Hypermesh二次开发实战:从Tcl/Tk脚本到Ext API的进阶之路

本文系统介绍了Hypermesh二次开发的进阶路径,从自动化重复操作的Tcl/Tk脚本入门,到利用HMASCII接口深度读写模型数据,最终深入Ext API进行高性能计算与功能定制。通过实战案例,帮助工程师掌握从脚本录制到C++插件开发的完整技能,显著提升CAE前处理效率与自动化水平。

weixin_29306875的博客 670

2.单例设计模式

1.singleton 是什么 ​ 单例: ​ 单:唯一 ​ 例:实例 ​ 单例设计模式:即某个类在整个系统中只有一个实例对象被获取和使用的代码模式 例如:代表JVM运行环境的Runtime类 2.要点: 1)构造器私有化 2)含有该类的静态变量来保存这个实例 3)对外提供获取该实例的方式 ​ a.直接暴露 ​ b.用静态变量的get 方法获取 3.几种常见的形式 ​ 4.案例: 1)饿汉式: 使用: 1.2)静态代码块饿汉式 可以通过类加载器加载类路径下面的所

haozy123的博客 153

Jasper Report使用JSON数据源创建报表

最近在做一个项目小功能,表单结案要生成PDF报表。 起初,想用HTML模板(art-template模板引擎)编写,利用浏览器的打印功能保存成pdf文件下载。但是HTML编写好的模板,页码、页眉、页脚设置有坑,表单内容中的表格较多,表格不能设置跨页,导致跨页的表格内容与页眉重叠,没能解决这个问题。 于是,转战研究Jasper report生成报表,用更加专业的报表生成工具来做。刚开始,也是跌跌撞撞,遇到了很多问题,因为觉得没有退路了,必须要用这个搞出来,所以就硬着头皮去找各种资料。 主要使用的json

xiaogege2012的专栏 3319

Windows 11 下 WSL 离线安装 Ubuntu 22.04 保姆级教程(国内镜像加速版)

本文提供了一份针对中国地区用户的Windows 11下WSL离线安装Ubuntu 22.04的详细教程。通过使用国内镜像源加速下载安装包,并配合PowerShell命令完成部署,有效解决了官方商店下载缓慢的问题。教程涵盖环境准备、离线包获取、安装初始化及安装后的关键优化配置,帮助用户快速搭建高效的Linux开发环境。

weixin_28452161的博客 1377

第2章 单例设计模式

2.1 理解单例设计模式 单例模式确保类有且只有一个特定类型的对象,并提供全局访问点。程序运行过程中只能生成一个实例,以免对同一资源产生相互冲突的请求。 单例设计模式的意图如下: 确保类有且只有一个对象被创建 为对象提供一个访问点,使程序可以全局访问该对象 控制共享资源的并行访问 实现单例模式的一个简单方法是,使构造函数私有化,并创建一个静态方法来完成对象的初始化。这样,对象将在第一次调用时创...

无夜之凛冬的博客 175

DCDC开关节点SW的Layout抉择:打孔换层与EMI共模辐射的权衡

本文深入探讨了DCDC转换器中开关节点SW的Layout设计对EMI共模辐射的影响。通过分析SW节点的EMI辐射机制、打孔换层对输入环路的影响以及铜皮面积与共模辐射的量化关系,提出了工程实践中的权衡策略和优化方法,帮助工程师在设计中平衡EMI性能和电路效率。

weixin_29722783的博客 245

单例设计模式2(饿汉式)

因为单例设计模式在外部没有对象,无法调用该方法,只能通过类名.方法名调用该方法,又因为在静态方法中无法直接调用非静态属性,所以要将ee定义为静态属性。在这里创建ehan类的一个对象,并且使它变成静态属性因为单例设计模式在外部没有对象,无法调用该方法,只能通过类名.方法名调用该方法,又因为在静态方法中无法直接调用静态属性。如果我们在使用的过程中非常消耗时间或者消耗资源,并且我们大部分情况下都不需要该对象,饿汉式就不推荐使用了,我们可以考虑使用单例设计模式中的懒汉式实现。

2302_80461269的博客 383

【人工智能】广度优先搜索(BFS)在人工智能中的应用(Python源码)

本文系统阐述了广度优先搜索(BFS)算法在人工智能领域的核心原理与应用。作为无信息搜索算法,BFS通过FIFO队列实现节点遍历,保证在无权图中的最优性。文章详细解析了BFS的伪代码实现和Python编程示例,并通过机器人路径规划案例展示了其实际应用场景。测试结果表明,BFS能有效解决包含障碍物的网格寻路问题,验证了算法在AI领域的实用价值。该研究为理解基础搜索算法及其工程应用提供了重要参考。

梦想起飞的地方 1142

深入YOLOv8内部核心:用RepNCSPELAN4深度重构主干网络,即插即用的高效涨点方案

本文提出了一种改进YOLOv8目标检测模型的方法,通过在YOLOv8中引入RepNCSPELAN模块来提高检测性能。该模块融合了RepVGG重参数化思想与CSP-ELAN结构,在保持推理速度的同时增强特征表达能力。实验结果表明,改进后的RepNCSPELAN-YOLOv8相比原模型在多项指标上均有提升:准确率从0.84提高到0.86,召回率从0.72提升至0.81,mAP50和mAP50-95也分别提高了0.06和0.04。文章详细介绍了模块设计原理和移植步骤,包括配置文件创建、代码修改等关键环节,为YOL

FJN110的博客 185

高频面试题2:单例设计模式

Singleton:在java中即指单例设计模式,某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。jvm中的runtime类。 1,只能有一个实例(构造器私有化) 2,必须自行创建这个实例。(含有一个该类的静态变量来保存这个唯一的实例) 3,必须自行向整个系统提供这个实例(对外提供获取该实例对象的方式1直接暴露2用静态边量的get方法获取) 常见形式: 饿汉式: 类实例化直接创建对象...

用心做事,用爱生活 402

基于Xilinx XDMA 的PCIE通信

基于Xilinx XDMA 的PCIE通信 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 PCI Express Base Specification Revision 5.0 pg195-pcie-dma PCI Express体系

Crazzy_M的博客 1万+

单例设计模式(2)

单例模式在使用时。存在以下问题:对oop不太友好,隐藏类之间的关系、扩展性较差、不支持有参的构造函数等,使用单例模式的场景就是要保证类的全局唯一性

weixin_53294082的博客 589

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

2 单例设计模式面试题

单例设计模式:保证内存中只有一个对象 单例设计模式的两种写法: 饿汉式: 懒汉式:单例的延迟加载模式 饿汉式和懒汉式的区别: 1 饿汉式是空间换时间(一上来就创建对象),懒汉式是时间换空间(需要判断,浪费时间) 2 在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能创建多个对象 转载于:https://www.cnblogs.com/ltfxy/p/10136...

weixin_30852367的博客 82

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C#基础11.2:单例设计模式

  PS:注释和讲解全在代码中 单例设计模式其实就是一个经典问题:如何设计只能有一个实例化的对象的类 //其实C++也是用的基本一模一样的方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespac...

加载中... 314

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java设计模式-2.单例设计模式

确保一个类只有一个实例(举例:任务管理器、Runtime类) 饿汉式和懒汉式区别: 单线程 饿汉式:空间换时间(一上来就直接创建对象)更好 懒汉式:时间换空间(没有直接创建对象) 多线程 饿汉式:没有安全隐患 懒汉式:可能会出现安全隐患,会创建多个对象 package day25; public class Dk1Singleton { //单例设计模式 //类只能创建一个对象 public static void main(String[] args) { /*由于加入priva

weixin_43203731的博客 197

探索java设计模式(2)之单例设计模式

java设计模式之单例设计模式单例设计模式 单例设计模式 单例设计模式介绍 所谓类的单例设计模式,就是 采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如 Hibernate 的 SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。 单例设计模式八种方式:

肿肿的博客 297

单例设计模式2

恶汉式(静态代码块儿) 优缺点说明: 这种方式和上面的相似,只不过将类实例化的过程放在了静态代码块中,也是在类装载的时候,就执行静态代码块儿中的代码,初始化类的实例.优缺点和上面是一样的. 结论: 这种单例模式可用,可能 造成内存浪费 代码演示 package com.atguigu.principle.singleton.type02; /** * @author victor * @site https://victorfengming.github.io/ * @company XDL

秋叶夏风的博客 478

第一季:2单例设计模式【Java面试题】

第一季:2单例设计模式【Java面试题】

小心星的博客 869

java面向对象之封装(2)this和单例设计模式

this和单例设计模式 1.this:用于对象的引用      哪个对象调用就代表哪个对象的引用      调用构造的时候this必须放在第一行 2.单例设计模式:     保证该类对象在整个内存当中只有一份存在     构造函数可以被私有 3单例设计模式共有23种,现介绍一下两种饿汉式和懒汉式(此点牵涉到线程安全问题) (1)饿汉式      第一步: 私有构造函数

fashiondingzhi的博客 496

java基础的零散总结(2)--单例设计模式

单例设计模式: 实例:张三开车去东北,经理只想让他中途开这同一辆车去。 在代码中车只有一辆,不管你怎么new,只有这一辆车。   懒汉式:(项目中建议使用) class Car{  private Car(){}//构造函数私有话    privat

chudaijiang的专栏 425

面向对象--单例设计模式(2)

单例设计模式的两种形式: 1、饿汉式(即先初始化对象)(开发优先选择饿汉式) Singel类一进内存,就已经创建好了对象。 public class Demo29 { public static void main(String[] args) { } } class Singel2{ private Singel2(){}//构造函数私有化 private stati

pengzhisen123的博客 221

牛客网---Java专项练习(2)(第二题单例设计模式)

牛客网—Java专项练习(2) 1.在异常处理中,以下描述不正确的有 a. try块不可以省略 b. 可以使用多重catch块 c. finally块可以省略 d. catch块和finally块可以同时省略 正确答案 D //try块的表现形式有三种 catch和finally不能同时省略 try-catch try-catch-finally try-finally...

zyk1.的博客 1493
上一篇: 1. 简单工厂设计模式
下一篇: 10.抽象和接口
cuichen97
博客等级 码龄7年 34粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值