浅析JAVA设计模式之单例模式(二)

开源WorkBuddy实战课:从零搭建AI Agent办公自动化工作台 AI Agent作为大语言模型之上的智能体,正在重塑办公效率。它通过工具调用、任务规划与长期记忆,将被动问答升级为主动执行。WorkBuddy作为图形化智能体工作台,降低了搭建门槛,让非技术人员也可配置自动化流程。本文开源整套实战资料,涵盖JDK环境配置、模型接入、日报邮件处理、表格清洗、批量文档生成等场景,并讲解自定义指令、Skills扩展与MCP协议。从基础概念到工程实践,帮助读者快速上手,构建属于自己的办公自动化助手。 阅读详情

1 懒汉式单例模式

       与饿汉式单例模式相同的是,类的构造函数也是私有的,不同的是懒汉式单例类在第一次被引用时才将自己实例化,

1.1懒汉式单例模式:

         懒汉式单例模式是UML图如下:

 

图1.1

       从图中可以看出,和饿汉式单例模式一样它自己将自己实例化,不同的是懒汉式单例类的成员变量不再被final修饰,并且初始值为null,并且里面的静态工厂方法多了synchronized修饰符修饰。

1.2懒汉式单例模式的实现(建一个Singleton包,所有程序放在该包下):

(1)建一个需要单例化的类(LazySingleton.java)。

package Singleton;
public class LazySingleton {
	private static LazySingleton instance = null;
	private LazySingleton(){}
	//静态工厂方法
	public synchronized static LazySingleton  getInstance(){
		if(instance==null){
			instance=new LazySingleton();
		}
		return instance;
	}
}

     

       从代码可以看出,懒汉式单例类的构造方法也是私有的,所以不能在外面调用创建实例,同时该类也不能被继承。这个类的实例在第一次被引用的时候才会被创建出来,并且对静态工厂方法getInstance()做了同步化的处理,是为了防止多个线程同时调用产生多个实例。

 

(2)编写测试类(TestLazySingleton.java)。

package Singleton;
public class TestLazySingleton {
	public static void main(String[] args) {
		// TODO 自动生成方法存根
		LazySingleton lazySingleton1=LazySingleton.getInstance();
		LazySingleton lazySingleton2=LazySingleton.getInstance();
		LazySingleton lazySingleton3=LazySingleton.getInstance();
		
		System.out.println(lazySingleton1);
		System.out.println(lazySingleton2);
		System.out.println(lazySingleton3);
	}
}

输出结果:

Singleton.LazySingleton@c17164

Singleton.LazySingleton@c17164

Singleton.LazySingleton@c17164

 

   从结果可以看到,无论创建多少次,都是唯一一个实例。

(3)最后我们看一下UML图。

 

 

1.3 饿汉式单例与懒汉式单例的比较

(1) 从资源利用效率角度看,饿汉式单例模式比懒汉式单例模式差,因为饿汉式单例模式在类加载的时候都将自己实例化,多次加载就会造成多次实例化。

(2) 从反应速度的角度看,饿汉式比懒汉式速度高,而且懒汉式单例还做了同步的处理,如果在多线程的环境,耗时可能更多。

(3) 饿汉式单例模式本身更加符合Java的语言特点,比如c++语言是不容易实现,因为静态初始化在c++里面没有固定的顺序,因而在饿汉式单例类里面的instance变量的初始化与类的加载顺序没有保证,可能会出问题。

(4)以上两种单例形式因为构造方法的私有化,使得类失去了多态性,不允许被继承。为了克服这种缺点,有一种灵活的调整方法,就是把构造函数设置为受保护的,这种方式又称为登记式单例,将在下篇文章进行分析。

 

Author: Piano
Introduction: 师
者
Sign:
前事之不忘,后事之师

 

使用 Simulink + Simscape Electrical 实现一个变压器耦合式单相全波整流器的仿真模型 本文介绍了基于Simulink的变压器耦合式单相全波整流器建模与仿真方法。详细说明了从项目创建、模块添加、电路搭建到参数配置的完整建模过程,重点分析了整流器的效率与损耗特性,包括变压器损耗和二极管导通损耗。通过仿真展示了输入输出波形特征,并提出了选用高效元件、优化变压器设计等改进建议。该案例为电力电子系统建模提供了实用参考,有助于深入理解整流电路工作原理和性能优化方法。 阅读详情

相关推荐

软考软件评测师备考避坑指南:过来人告诉你这5个章节最容易丢分(附2024最新考纲解析)

本文为软考软件评测师考生提供备考避坑指南,深度解析5个高频失分章节,包括标准化与信息化基础、中间件技术、软件测试模型、白盒测试覆盖准则和性能测试指标。文章结合2024最新考纲,分享实战技巧和记忆口诀,帮助考生精准打击失分重灾区,提升备考效率。

weixin_29223603的博客 467

23种设计模式C++源码与UML实现--单例模式中的饿汉模式和懒汉模式

单例模式 单例模式是一种对象创建模式,使用单例模式,可以保证为一个类生成唯一的实例对象。也就是说在这个程序空间该类只有一个实例对象。 GoF对单例的定义:保证一个类、只有一个实例存在,同时提供对该实例加以访问的全局访问方法。 单例模式UML图 单例模式的目的就是保证一个类只有一个实例,并提供一个访问它的全局访问点。 使用单例模式的原因 在应用系统开发中,我们常常有以下需求: 多个线程公用一个socket资源,或者操作同一个对象 在整个程序空间需要使用全局变量,共享资源 大规模系统中,为了性能考虑,需要节

andrewbytecoder 912

ENVI基于Landsat影像构建郑州市2000-2019年遥感生态指数RSEI

本文基于landsat5、landsat7、landsat8三种传感器的影像,使用ENVI软件构建郑州市2000-2019年遥感生态指数RSEI。内含ENVI详细操作、使用的公式以及构建结果。

Lexicopperfield的博客 1万+

【设计模式】单例模式,饿汉式单例和懒汉式单例

概述 单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。属于创建型模式,UML图: 代码体现 class Singleton { public: //提供获取类实例的接口,静态方法,可以直接通过类名使用 static Singleton* getInstance() ...

pointer_y的博客 478

M1/M2 Mac用户看过来:不装VirtualBox,用PD虚拟机也能跑ENSP的保姆级教程

本文为M1/M2 Mac用户提供了一份不依赖VirtualBox,使用Parallels Desktop虚拟机运行ENSP的详细指南。通过ARM架构的Win10镜像选择、组件替代方案和网络配置优化,实现ENSP核心功能的高效运行,特别适合网络工程师在苹果芯片设备上进行网络模拟。

weixin_28683065的博客 411

在 Ansys Mechanical 中使用“螺栓工具”插件自动生成螺栓

在有限元分析 (FEA) 中,高效创建螺栓连接对于确保机械装配的结构完整性和性能至关重要。螺栓是连接组件不可或缺的一部分,它们在负载下的精确建模会影响整个系统。快速高效的螺栓建模使工程师能够快速优化设计,满足紧迫的期限,并通过为其他关键设计任务释放资源来提高整体生产力。此外,螺栓建模的精度可以最大限度地降低模型创建过程中出错的风险,这对于获得可靠和准确的分析结果至关重要。因此,在 FEA 中快速且无错误地创建螺栓连接对于高效、可靠和成功的工程结果至关重要。

jkh920184196的博客 3101

单例模式

目录 一、单例模式的介绍 1、介绍 2、应用场景 3、优缺点 二、单例模式的实现 1、饿汉式 2、懒汉式 3、双重检查(DCL) 4、静态内部类 5、枚举单例类 三、单例模式的应用 一、单例模式的介绍 1、介绍 所谓的单例,就是指单实例,由该类自己负责创建对象,同时对外提供一种唯一访问该对象的方式。这样外部程序在使用时,直接访问即可。单例模式有以下几个注意点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象(外部程序)提供...

weixin_47382783的博客 688

医学图像配准实战:用Python实现MIND特征提取(附完整代码)

本文详细介绍了MIND(模态无关邻域描述符)在医学图像配准中的应用。通过Python和PyTorch实战,从原理到代码逐步解析了如何提取MIND特征,并利用其对结构而非灰度的感知能力,有效解决CT、MRI等多模态图像的对齐难题,为病灶追踪、手术导航等高级应用提供鲁棒性基础。

263

设计模式-单例模式(懒汉式)

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。使用单例模式可以保证一个类只生成一个对象实例,即在整个程序的生命周期内,该类的实例对象只存在一个。 单例模式特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一...

mac的博客 879

Android 10.0 SystemUI下拉状态栏点击设置跳转设置时白屏修改

在10.0的系统rom定制化开发中,在SystemUI下拉状态栏下方点击设置图标跳转设置的过程中,发现 有白屏显示挡住设置界面,显示白屏,接下来分析下相关原因来解决这个问题

安卓兼职framework和app工程师的博客 80

YOLOv8多传感器融合技术——毫米波雷达融合技术详解

本文介绍了YOLOv8与毫米波雷达融合技术在自动驾驶系统中的应用。毫米波雷达具有全天候工作、测距测速精准等优势,但存在分辨率低等局限。通过融合YOLOv8的视觉检测能力,可显著提升系统在恶劣环境下的感知性能。文章详细阐述了融合实现方法,包括雷达数据处理、目标投影匹配、置信度融合等关键技术,并提供了评估指标和应用场景分析。这种多传感器融合方案能有效弥补单一传感器的不足,为自动驾驶提供更可靠的环境感知能力,是实现高级别自动驾驶的重要技术支撑。

u010117029的博客 175

单例模式(饿汉VS懒汉)

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 “通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。” 单例模式(Singleton)结构图: Singleton类,定义一个GetInstance

李春丽的博客 527

图机器学习(2)——图的可视化

图结构可通过图形化方式直观呈现。节点通常用圆形表示,边则用连接线表示。然而当节点和边数量增加时,绘制清晰的图形表示可能会变得相当困难,这主要源于节点在二维坐标系中的布局问题。对于包含数百个节点的图,手动指定每个节点的坐标显然不切实际。在本节中,我们将介绍如何在不指定每个节点坐标的情况下绘制图形。我们将利用两种不同的解决方案:networkx 和 Gephi。

盼小辉丶的博客 8758

浅析Java设计模式——单例模式(1)

浅析Java设计模式——单例模式(1) Java中有许多设计模式,总体分为3大类:创建型模式、结构型模式和行为型模式。创建型模式最常见也最简单的就是单例模式。单例模式,顾名思义就是一个类只能有一个对象(实例)。 单例模式总结有3个特点: 1. 单例类只能有一个对象实例。 2. 该类必须自己创建的唯一的实例。 3. 该类必须向系统中所有其他对象提供这个实例。 单例模式的初代版本(

zyn_1024的博客 1975

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

浅析Java设计模式——单例模式(2)

浅析Java设计模式——单例模式(2)单例模式的实现方法有很多,关于懒汉式基本方法及其双重锁检测的方法,已在上篇文章中进行了介绍。文章链接:浅析Java设计模式——单例模式(1)本次介绍通过饿汉式、静态内部类及枚举的方式来实现单例模式。1.饿汉式public class Singleton{ private static Singleton instance=new Singleton();//单...

zyn_1024的博客 1058

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式浅析(五) ·单例模式

设计模式浅析(五) ·单例模式

Jerrylau213的博客 1962

VB摄像头监控

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

浅析java设计模式之单例模式

单例模式顾名思义就是只含有一个实例,一个实例复用,达到减少创建对象的开销以及大大节省资源的效果,是java23种设计模式最简单应用最多的设计模式;单例模式的实现方法主要分为饿汉式和懒汉式两大类, 饿汉式 public class SimpleInstance { public static SimpleInstance simpleInstance = new SimpleInstance(); private SimpleInstance() {} public static

weixin_44947701的博客 429

深入单例模式 java_深入浅析Java设计模式中的单例模式

深入浅析Java设计模式中的单例模式发布时间:2020-11-11 17:10:45来源:亿速云阅读:101作者:Leah这篇文章给大家介绍深入浅析Java设计模式中的单例模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。单例模式是非常常见的设计模式,其含义也很简单,一个类给外部提供一个唯一的实例。下文所有的代码均在github源码整个项目不仅仅有设计模式,还有其他JavaS...

weixin_32441957的博客 164

设计模式之单例模式浅析

常用的单例模式:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式。 1、饿汉模式 public class Singleton1 { //类加载时就实例化 private static Singleton1 singleton1 = new Singleton1(); //私有的构造方法 private Singleton1() { } //以自己实例为返回值的的公有方法 public static Singleton1 getIns

qq_41153405的博客 356

Java设计模式 | 浅析单例模式

目录什么是单例设计模式?饿汉式单例懒汉式单例饿汉和懒汉的区别线程安全的懒汉式单例单例的适用场景 什么是单例设计模式? 对于单例设计模式来说,其实和生活密不可分。假如说你的生活中有些东西只能有一个,比如亲人。任何时间你想找父亲开视频聊天,找到的都是唯一的一个父亲。不可能说两次通话找到的不同的父亲。例子可能不是很恰当。就是说这样一个需求,每次获取一个对象时,所拿到的对象都是同一个对象。 对单例来说其主要规则有如下三点: 1. 其构造器必须是private的,不能通过new来创建对象。 2. 只能通过唯一一个静态

qq_40291234的博客 324

(一)Java设计模式学习:浅析单例模式

主要介绍设计模式里面的单例模式

song&life 188

浅析设计模式之单例模式(又名:单值模式、单件模式)

 Singleton(单值模式)又名单例模式、单态模式 设计模式:解决某一类问题最行之有效的方法。 单例模式所解决问题:解决一个类在内存中只存在一个对象问题。 1. 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 Java中如何保证对象的唯一性: 1、 为了避免其它程序过多建立该类对象,先禁止其它程序建立该类对象。 2、 为了让其它程序可以访问到该类对象,只好在本

Miner_Jasber_Yon的专栏 4万+

【设计模式】各个击破单例模式的8种写法

单例模式在一个系统开发过程中,我们在基于节省内存资源、保证数据内容的一致性的考虑上,往往需要对某些类要求只能创建一个实例,即「保证类只有一个实例」的设计模式就是单例模式。比如我们遇到过的...

HollisChuang's Blog 710

【JavaSE】Java设计模式详解(一)单例模式(饿汉式与懒汉式实现)

本文讲述了单例模式的设计方法,以及饿汉式与懒汉式单例模式的优缺点分析。

黄小黄的博客 2575

JAVA设计模式之单例模式浅析

什么是单例模式 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。 简单理解,单例模式就好比我们电脑的任务管理器,我们打开了一个任务管理器,如果试图再次打开一个新的任务管理器,Windows系统不会为你提供。 结构图 单例模式要点: 某个类只能有一个实例; 必须自行创建这个实例; 必须自行向整个系统提供这个实例 通俗一点说就是将构造函数私有化,在单例类中实例化一个该类对象,并

qq_40663411的博客 260

单例模式浅析

  单例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。   1.懒汉式,线程不安全 Singleton的教学版本 public class Singleton { private static Singleton instance; private Singleton (){} public s...

吹雪的专栏 2264
上一篇: 大数据时代的图表可视化利器——highcharts,D3和百度的echarts
下一篇: 管理之道(1)
小水滴2014
博客等级 码龄15年 81粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值