当前位置: 首页 > 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

饿汉式懒汉式对比

相关文章:

  • 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的区别
  • 怎样做网站个人简介/seo小白入门
  • 无锡网站建设服务/百度资源搜索引擎
  • 医药类网站怎么做seo/网络推广课程培训
  • 常州做网站/什么是优化设计
  • 网站开发与建设方向/天堂tv在线观看
  • 自贡建设局网站/网站域名解析