单例设计模式的几种实现方法

单例设计模式五种例子 通过C#详细讲解设计模式,通俗易懂,适合刚了解设计模式的同志们 立即下载

​​​​​​1,饿汉式

1.1 直接实例化饿汉式

/**
 * 饿汉式:直接创建对象,不存在线程安全问题
 * @author lais
 *
 */
public class EHanSingle {

	//私有化构造器
	private EHanSingle(){}
	
	//私有化静态对象,并直接创建,强调单例时可以用final修饰
	private final static EHanSingle single = new EHanSingle();
	
	//提供外界获取方式
	public static EHanSingle getInstance(){
		return single;
	}
	//测试
	public static void main(String[] args) {
		EHanSingle instance1 = EHanSingle.getInstance();
		EHanSingle instance2 = EHanSingle.getInstance();
		System.out.println(instance1);
		System.out.println(instance2);
	}
}

1.2 枚举式饿汉式

/**
 * 枚举类饿汉式
 * 枚举类型:表示该对象是有限的几个,我们限定为一个,就是单例了
 * @author lais
 *
 */
public enum EHanEnum {
	//实例对象
	INSTANCE;
	
	//测试方法
	public static void main(String[] args) { 
		System.out.println(EHanEnum.INSTANCE);
		System.out.println(EHanEnum.INSTANCE);
	}
}

1.3 静态代码块饿汉式

/**
 * 静态代码块饿汉式:使用与复杂场景
 * @author lais
 *
 */
public class EHanSingle2 {

	//私有化构造器
	private EHanSingle2(){}
	
	//私有化静态对象,并直接创建
	private static final  EHanSingle2 single ;
	
	static {
		//可以在初始化对象之前进行某些初始化操作
		//例如,从外界配置文件中加载某些属性数据等
		single = new EHanSingle2();
	}
	//提供外界获取方式 
	public static EHanSingle2 getInstance(){
		return single;
	}
	//测试
	public static void main(String[] args) {
		EHanSingle2 instance1 = EHanSingle2.getInstance();
		EHanSingle2 instance2 = EHanSingle2.getInstance();
		System.out.println(instance1);
		System.out.println(instance2);
	}
}

2、懒汉式

2.1、  线程不安全的懒汉式

/**
 * 懒汉式:懒汉式存在线程安全问题
 * @author lais
 *
 */
public class LanHanSingle {
	
	private LanHanSingle(){}
	
	private static LanHanSingle single;
	
	public static LanHanSingle getInstance(){
		//可以加些判断要求
		single = new LanHanSingle();
		return single;
	}
}

2.2 线程安全的懒汉式

/**
 * 懒汉式:懒汉式存在线程安全问题
 * @author lais
 *
 */
public class LanHanSingle2 {
	
	private LanHanSingle2(){}
	
	private static LanHanSingle2 single;
	
	public static LanHanSingle2 getInstance(){
		//可以加些判断要求
		if(single == null){
			synchronized (LanHanSingle2.class) {
				if(single == null)
					single = new LanHanSingle2();
			}
		}
		return single;
	}
}

2.3 静态内部类懒汉式

/**
 * 在内部类被加载和初始化时,才创建INSTANCE实例对象
 * 静态内部类不会自动随着外部类的加载和初始化而初始化,它是单独去加载和初始化的
 * 因为是在内部类加载和初始化时,创建的,因此时线程安全的
 * @author lais
 *
 */
public class InnerSingle {

	private InnerSingle(){}
	
	private static class Inner{
		private static final InnerSingle INSTANCE = new InnerSingle();
	}
	
	public static InnerSingle getInstance(){
		return Inner.INSTANCE;
	}
}

3,总结

使用饿汉式时,枚举方式最简单

使用懒汉式时,静态内部类方式最简单

3D点云处理:PointNet++与PointTransformer的对比 摘要: 3D点云处理中,PointNet++和PointTransformer是两种主流深度学习模型。PointNet++通过分层采样和分组策略提取局部特征,而PointTransformer利用自注意力机制捕捉全局上下文。实验表明,PointTransformer在分类(ModelNet40准确率92.1%)和分割(ShapeNet mIoU 85.7%)任务上性能更优,但计算开销较大(训练时间180秒/轮)。PointNet++在实时性场景更具优势(训练时间120秒/轮)。未来可结合两者优势,或优化Tr 阅读详情

相关推荐

Fluent UDF实战:除了速度入口,你的DEFINE_PROFILE宏还能搞定这些边界条件(温度、组分、壁面接触角全解析)

本文深入解析Fluent UDF中DEFINE_PROFILE宏在复杂边界条件中的高阶应用,涵盖温度场、组分浓度和壁面接触角等关键场景。通过实战代码示例,展示如何实现空间梯度温度场、动态组分控制和接触角动态调整,助力CFD工程师突破标准界面限制,提升仿真精度和效率。

weixin_28688385的博客 449

单例设计模式(8种)

/* * 单例设计模式: * 1.所谓的单例设计模式,就是采用一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。 * * 2.如何实现? * 饿汉式 vs 懒汉式 * 3.区分饿汉式和懒汉式 * 饿汉式:(创建时就已经存在对象) * 坏处:对象加载时间过长。 * 好处:饿汉式是线程安全的。 * 懒汉式: * 好处:延迟对象的创建 * 目前写法的坏处:线程不安全。---->到多线程内容时,在修改 * */ public class Si.

weixin_49329785的博客 1707

【Codex安装使用手册】

Codex安装部署使用教程

qq_43392230的博客 4945

java设计模式之单例模式

这里写自定义目录标题单例设计模式介绍单例模式应用场景单例设计模式八种方式1.1 饿汉式(静态常量)1.2 饿汉式(静态代码块)1.3懒汉式(线程不安全)1.4懒汉式(线程安全,同步方法)创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并

weixin_44991304的博客 734

T2T基因组组装实战指南:从数据到完整染色体

本文详细介绍了T2T基因组组装技术的实战指南,从测序数据选择到完整染色体组装的全流程。重点解析了ONT ultra-long和PacBio HiFi测序技术的优势,以及如何攻克端粒和着丝粒等重复区域的组装难题。通过具体案例和实用技巧,帮助研究人员实现从数据到完整染色体的高质量组装。

weixin_29292535的博客 845

SAP S4 MM模块自动记账全流程解析:从评估范围到科目分组的实战配置

本文深入解析SAP S4 MM模块自动记账的全流程,从核心概念评估范围与评估控制入手,详细阐述了评估类、科目分组等关键配置的逻辑关系。通过实战配置步骤,指导如何建立从物料移动(如收货、发料)到自动生成准确财务凭证的完整体系,确保库存价值与总账实时同步,为企业构建可靠的财务业务一体化基石。

weixin_29313547的博客 422

设计模式 - 单例模式的5种实现方法

确保类在程序中只有一个实例,并提供一个全局访问点。

逆风飞翔的博客 712

RKNN3588——YOLOv8的PT模型转RKNN模型

1. 首先克隆rknn修改后的ultralytics版本项目到本地主要是修改了源码的ultralytics/nn/modules/head.py和ultralytics/engine/exporter.py两个文件。2. 使用修改后的ultralytics对pt模型进行模型转换,此处的format=rknn代表支持rknn后续的转换,而不是用onnx,一定要注意!!!

张飞飞的博客 7169

单例模式的N种实现方式

如果你自认为已经掌握懒汉式、饿汉式、DCL、IoDH、枚举等单例实现方式,可以直接看最后的打破单例。如果不是,建议你耐心从头看完。 相信你看完本文能让你掌握Java中所有单例模式的设计方式。 单例设计模式是GOF 23中设计模式中常见的设计模式之一,不论是在我们日常开发,还是一些第三方库中几乎都能见到单例模式。包括在面试时初中级的程序员基本都会被问到单.

小黑说Java 2167

Python内置函数zip()——《Python内置函数手册》Python老吕编著

zip()函数是 Python 中的一个内置函数,用于将多个可迭代对象(如列表、元组、字符串等)中对应的元素打包成一个个元组,然后返回由这些元组组成的迭代器。zip()函数常用于将多个序列并行迭代,或者用于数据对齐。zip()它返回一个迭代器,这意味着你可以逐个获取打包后的元素,而不是一次性将所有元素加载到内存中。如果输入的可迭代对象长度不一致,zip()会以最短的可迭代对象为准,只打包到最短对象的末尾。它可以用来并行迭代多个序列,使得代码更加简洁和高效。在接下来的章节中,我们将详细介绍。

Python老吕的博客 680

蓝桥杯 stm32 PWM 测量频率

参考 数据手册:比赛 的板子 上面有两个信号发生器,如下图。通过 扭动 可变电阻 (R40, R39), 来实现 PWM 频率的改变。PA15PB4。PA15,PB4分别使用TIM2_CH1TIM3_CH1来对频率进行捕获。

wuyiyu_的博客 2931

单例模式和多例模式和工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。之前我们创建类对象时, 都是使用 new 对象的形式创建, 除new 对象方式以外, 工厂模式也可以创建对象.

m0_46168848的博客 1971

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

单例设计模式的几种常见实现方法

最简单的设计模式 实现方法 懒汉式 饿汉式 双重检查锁 枚举 静态内部类 单例工厂 防范 总结 最简单的设计模式单例可以说是GOF23中最简单的一种设计模式,也经常用到。比如window的任务管理器,比如servlet对象等等。单例要完成的就是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个唯一的实例。就像它的定义: Ensure a class has only one instan

pingzi459的博客 501

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JS单例设计模式

单例:就是单个实例的意思。 核心思想:第一次new的时候返回实例对象,并且保存这个实例对象,后面不管你new多少次,返回的都是那个被保存的实例对象。这种设计模式适用于整个系统只需要拥有一个全局对象,这样才有利于协调系统整体的行为。 基本实现方式 function Singleton(name) { this.name = name } Singleton.prototype.getName = function () { return this.name } var instance

cai_niao5623的博客 795

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

线程安全的单例设计模式(java)

单例设计模式中,懒加载方式写法如下: public class UnsafeLazyInitialization { private static Instance instance; public static Instance getInstance() { if (instance == null) { instance = new ...

gaishi_hero的博客 190

8.27 [JavaSE] 线程的生命周期.线程池.单例设计模式.枚举类型

文章目录线程的生命周期线程状态图线程状态描述线程池线程池的使用单例设计模式饿汉式懒汉式老汉式双重锁枚举类型实现枚举 线程的生命周期 线程状态图 线程状态描述 线程池 线程池的使用 单例设计模式 饿汉式 懒汉式 老汉式 其实就是在饿汉模式上面加了一把锁 双重锁 枚举类型 实现枚举 ...

SHOUHANG88的博客 233

【javaSE】单例设计模式的五种实现方式

单例设计模式的特点: 1.一个类只允许实例化一个实例对象 2.在其他类中不允许通过构造方法实例化对象 单例模式如何完成: 1.将构造方法私有化(外部类不能访问,进而不能使用构造方法实例化对象) 2.通过静态的public方法,返回值为此类的对象来获取实例化对象 单例设计模式的五种实现方式: 1.饿汉式(静态方法) 优点:简单易理解,类加载时就实例化了对象 缺点:若一直为使用此对象,浪费了内存空间,...

263

单例设计模式的几种实现方式

设计模式 1.单例设计模式 单例设计模式简介 单例设计模式中,单例对象的类必须保证在jvm中只存在一个实例. 应用:Spring中的Bean默认都是单例的.线程池,缓存,日志对象等一般设计成单例的. 实现单例模式的思路为:先私有化构造方法;创建本类对象并提供公共的方法方式; 1.1经典的懒汉模式 所谓懒汉模式,是指需要单例对象的时候,才创建类的实例.这种方式在多线程下可能会创建多个对象,是线程不安全的.多线程下可能导致单例模式失效. package com.begank.revival.juc.single

jerryBQ的博客 253

java几种方式实现单例设计模式

转自:java几种方式实现单例设计模式单例模式的几种实现方式:一:饿汉式单例方式一:枚举方式获得单例对象方式二:静态属性获得单例对象方式三:静态方法获得单例对象二:懒汉式单例方式一:静态方法获得单例对象(线程安全)方式二:内部类方式去获取https://www.pinlue.com/article/2020/06/1012/0910708404049.html ...

icontent 1183

单例设计模式究竟有哪几种?

饿汉式单例设计 懒汉式单例设计

tanx的博客 398

单例设计模式的几种简单写法。

public class Singleton{ private static Singleton singleton=null; //将自己封装起来 private Singleton(){}; //构造器私有,提供一个可以供外部访问的接口。 public static Singleton forInstance(){ if(singleton==null){ singleto...

weixin_45794957的博客 178

单例设计模式的6种实现方式

无论什么开发中,设计模式都起着关键的作用,其中比较常用的当属单例了~那么什么是单例设计模式呢? 1. 什么是单例设计模式(SINGLETON) 单例模式指的是在应用整个生命周期内只能存在一个实例。单例模式是一种被广泛使用的设计模式。他有很多好处,能够避免实例对象的重复创建,减少创建实例的系统开销,节省内存。 有一个比喻:俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleto...

lip86的专栏 1110

单例设计模式

单例设计模式 设计模式:解决一类问题最行之有效的方法 文章目录一、单例设计模式二、如何保证对象唯一三、如何用代码实现四、单例设计模式的两种实现形式饿汉式总结 一、单例设计模式 解决一个类在内存中只有一个对象的模式。当需要将该事物的对象保证在内存中唯一时,使用该设计模式。 二、如何保证对象唯一 1、为了避免其他程序过多建立该类对象,提前禁止其他程序建立该类对象; 2、为了保证其他程序能够访问该类对象,在本类中自定义一个本类对象; 3、为了方便其他程序对自定义对象的访问,对外提供一些访问方式。 三、如何用

weixin_46643922的博客 391

Java 单例设计模式

Java单例设计模式 一、什么是单例设计模式 单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 二、如何应用单例设计模式 根据定义,一个类只能存在一种对象实例,所以我们需将类的构造访问权限设置成private,只能在类内进行操作。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象, 静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。 三、单例设计

枯寂家博客 1408

Java多线程的单例设计模式 多种实现方法

目录 前言 饿汉式 懒汉式 Double_check volatile + double_check Holder方式 枚举

随便写点C++和JAVA的知识 1034
上一篇: docker的使用
下一篇: centos7中docker安装jenkins
java_lais
博客等级 码龄9年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值