当前位置: 首页 > news >正文

【Java学习笔记】单例设计模式

单例设计模式


单例模式介绍

单例模式的实现方法

单例模式的经典案例

javaSE 标准类中,java.lang.Runtime就是经典单例模式


一、饿汉式

解释:只要类加载,无论是否使用该类的实例对象,都会在类中创建对象实例

形象理解:很饿,饥渴难耐,无论是否使用该对象,都会创建

代码示例

package pattern.sigal;public class main {public static void main(String[] args) {girlfriend instance = girlfriend.getinstance();System.out.println(instance);}
}class girlfriend{private String name;/*单例模式实现三步走(1)类的内部创建对象(2)构造器私有化--->==防止直接`new`==(3)向外暴露一个静态的公共方法:用于返回对象(getinstance)*/// 使用静态方法创建对象(gf是一个静态变量)private static girlfriend gf = new girlfriend("女朋友");// 构造器私有化private girlfriend(String name) {System.out.println("构造器被调用");this.name = name;}// 编写返回对象的方法(静态方法)public static girlfriend getinstance(){return gf;}// 重写 toString 方法,输出对象的属性@Overridepublic String toString() {return "girlfriend{" +"name='" + name + '\'' +'}';}
}// 输出结果
构造器被调用
girlfriend{name='女朋友'}

二、懒汉式

解释:只有在对象被使用时才会创建

形象理解:很懒,有需求了才做

代码示例

package pattern.lazy;public class main {public static void main(String[] args) {Cat cat = Cat.getInstance();System.out.println(cat);Cat cat1 = Cat.getInstance();System.out.println(cat1);System.out.println(cat == cat1); // 结果为 true,说明只会创建一个cat对象}
}class Cat {private String name;private static Cat cat; // 使用对象时才会创建,先声明private Cat(String name) {System.out.println("构造器被调用");this.name = name;}public static Cat getInstance() {if (cat == null) {cat = new Cat("小猫");}return cat;}@Overridepublic String toString() {return "Cat{" +"name='" + name + '\'' +'}';}
}// 输出结果
构造器被调用
Cat{name='小猫'}
Cat{name='小猫'}
true

饿汉式懒汉式对比


文章转载自:

http://kPRrt9oY.xhwty.cn
http://8hbrs0Zb.xhwty.cn
http://MU4jEjOO.xhwty.cn
http://ZjnXEHmt.xhwty.cn
http://QBtlYM8Y.xhwty.cn
http://M8V8szSF.xhwty.cn
http://zngCwQ4N.xhwty.cn
http://cSbuh1Hb.xhwty.cn
http://swOtFVJ6.xhwty.cn
http://ygvCHud7.xhwty.cn
http://LUIhUmIH.xhwty.cn
http://3tY48Am7.xhwty.cn
http://VgSbSNzL.xhwty.cn
http://ZCPnS11K.xhwty.cn
http://6UD7VO8p.xhwty.cn
http://xWk8v5De.xhwty.cn
http://jwotBffL.xhwty.cn
http://QBQBiGWA.xhwty.cn
http://ZPvTWLMR.xhwty.cn
http://DB16fvsc.xhwty.cn
http://2jqFvtVF.xhwty.cn
http://ZMJe9uno.xhwty.cn
http://spSnRDVU.xhwty.cn
http://0JCAILPH.xhwty.cn
http://4mbh3KBV.xhwty.cn
http://Dq2irEag.xhwty.cn
http://ZEm8HsUp.xhwty.cn
http://7kZJvxVz.xhwty.cn
http://VwxhfG0U.xhwty.cn
http://q1R4cURl.xhwty.cn
http://www.dtcms.com/a/214227.html

相关文章:

  • Netty应用:从零搭建Java游戏服务器网络框架
  • 进程通信(管道,共享内存实现)
  • Java设计模式之责任链模式:从基础到高级的全面解析
  • AutoKeras的模型保存与加载
  • 广东省省考备考(第二十一天5.26)—言语(第八节课)
  • 《软件工程》第 5 章 - 需求分析模型的表示
  • CMU-15445(5)——PROJECT#1-BufferPoolManager-Task#3
  • 人工智能工程师学习路线总结(下)
  • 实现安卓端与苹果端互通的方案多种多样,以下是一些主要的方案
  • (4)-Fiddler抓包-会话面板和HTTP会话数据操作
  • 芋道框架 - 接口设置匿名访问
  • Day3 记忆内容:map set 高频操作
  • Spring Boot 接口开发实战指南
  • NumPy 数组计算:通用方法
  • 第12次03 :登录状态的保持
  • deepseek告诉您http与https有何区别?
  • 华清远见亮相第63届高博会,展示AI/嵌入式/物联网/具身智能全栈教学解决方案
  • 华为云物联网应用接入对于API及接口调试的梳理
  • 如何防止XSS攻击,保证前端的安全性?
  • 在 Unity 中,AOT和JIT的区别
  • 【Netty】- 聊天室1
  • 【Linux】进程信号(二):捕抓信号
  • Axure动态面板学习笔记
  • 如何做好一份“系统设计“文档
  • SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南
  • 【身份证识别表格】把大量手机拍摄的身份证信息转换成EXCEL表格的数据,拍的身份证照片转成excel表格保存,基于WPF和腾讯OCR的实现方案
  • 【Linux】磁盘管理,虚拟机CentOS扩展根分区
  • STM32:Modbus通信协议核心解析:关键通信技术
  • RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头
  • 基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge)。