java单列设计模式

news/2024/11/22 13:19:22/

文章目录

  • 设计模式概述
    • 何为单例模式
    • 实现思路
  • 单例模式的两种实现方式
    • 1 饿汉式
    • 2 懒汉式
  • 饿汉式 vs 懒汉式

设计模式概述

设计模式是在大量的实践中总结理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我们用不同的棋谱。“套路”

何为单例模式

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

实现思路

如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的

单例模式的两种实现方式

1 饿汉式

class Singleton {// 1.私有化构造器private Singleton() {}// 2.内部提供一个当前类的实例// 4.此实例也必须静态化private static Singleton single = new Singleton();// 3.提供公共的静态的方法,返回当前类的对象public static Singleton getInstance() {return single;}
}

2 懒汉式

class Singleton {// 1.私有化构造器private Singleton() {}// 2.内部提供一个当前类的实例// 4.此实例也必须静态化private static Singleton single;// 3.提供公共的静态的方法,返回当前类的对象public static Singleton getInstance() {if(single == null) {single = new Singleton();}return single;}
}

饿汉式 vs 懒汉式

饿汉式:

  • 特点:立即加载,即在使用类的时候已经将对象创建完毕。
  • 优点:实现起来简单;没有多线程安全问题。
  • 缺点:当类被加载的时候,会初始化static的实例,静态变量被创建并分配内存空间,从这以后,这个static的实例便一直占着这块内存,直到类被卸载时,静态变量被摧毁,并释放所占有的内存。因此在某些特定条件下会耗费内存

懒汉式:

  • 特点:延迟加载,即在调用静态方法时实例才被创建。
  • 优点:实现起来比较简单;当类被加载的时候,static的实例未被创建并分配内存空间,当静态方法第一次被调用时,初始化实例变量,并分配内存,因此在某些特定条件下会节约内存
  • 缺点:在多线程环境中,这种实现方法是完全错误的,线程不安全,根本不能保证单例的唯一性。

http://www.ppmy.cn/news/833787.html

相关文章

如何提升问卷得信度和效度?

设计调查问卷是任何研究过程中至关重要的一部分,无论是出于学术目的还是商业目的。调查是用于收集数据的常用工具,它们可以为消费者行为、意见、客户满意度和其他重要因素提供有价值的见解。然而,调查的可靠性和有效性对于确保收集的数据准确…

极简websocket实时聊天

在线体验链接:http://47.242.53.5:888/ 项目git地址:https://gitee.com/xiao-ming-1999/websocket-server.git 实现步骤: 在前端创建WebSocket连接:在Vue组件中使用vue-native-websocket库或原生的WebSocket API来创建WebSocket…

三菱fx3uplc恢复出厂设置_三菱fx3u plc解密过程与步骤分享

三菱plc fx3u解密过程与步骤 FX3U plc解密,免拆机的,包括禁止上载的问题也能读出正确程序和参数。 以下是解密的过程,供大家参考。 首先,三菱PLC FX3U用的编程软件必须用GX DEVE LOPER8.10以上的版本,也可以在网上下载…

三菱FX3SA PLC通过FX3G-485BD模块及变频器通信指令和三菱D700变频器进行通讯记录

要求:通过外部信号启动电机,通过通讯修改变频器的运行频率和加速时间及减速时间。 资料: 1.《FX3S/FX3G/FX3GC/FX3U/FX3UC 系列编程手册 - 基本 & 应用指令说明书》 2.《FX 用户手册 - 通信篇》 3.《FR-D700-CHT 使用手册(应用篇)》 …

三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏、三菱伺服电机

三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏、三菱伺服电机。 文件包括plc程序、触摸屏程序、电气图、IO地址分配表、电气BOM表、伺服参数配置,本程序已设备上成熟生产。 自己辛…

三菱PLC控制三轴(3个伺服)机械搬运手程序

三菱PLC控制三轴(3个伺服)机械搬运手程序,程序结构清晰明了,通俗易懂,触摸屏画画功能齐全,有PLC程序,触摸屏程序,CAD电气图纸。 实际项目,plc fx3u ,触摸屏 信捷,伺服台达…

三菱PLC基础知识 辅助继电器M

PLC 内部有很多辅助继电器,和输出继电器一样,只能由程序驱动,每个辅助继电器也有无数对常开、常闭接点供编程使用。其作用相当于继电器控制线路中的中间继电器。辅助继电器的接点在 PLC 内部编程时可以任意使用,但它不能直接驱动负…

三菱PLC编程与案例精讲之ST语言

想看到如何使用三菱ST文本结构化编程语言来编写通讯程序吗,比如让你用ST编写Modbus代码、编写Socket代码、用ST控制伺服进行各种动作,用ST实现多轴联动,电子凸轮,应该怎么做吗? 第一章 ST课程教学的目的 1.1 10分钟了…