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

单例模式之饿汉式

文章目录

  • 单例模式(饿汉式)
    • 代码
      • 静态变量创建实例代码
      • 静态代码块创建实例

单例模式(饿汉式)

单例模式是一种创建性的设计模式,主要是保证一个类只能有一个实例。全局中保证一个实例的使用。

单例模式饿汉式主要的构成是如下

  • 单例类
  • 私有化构造函数(防止实例化)
  • 私有化变量
  • 公共静态获得实例的方法(在调用这个方法前就已经实例化好了)

代码

静态变量创建实例代码

package singleton;/**** @author: Hui**/
public class SingletonTest {public static void main(String[] args) {Singleton singleton = Singleton.getInstance();Singleton singleton1 = Singleton.getInstance();System.out.println(singleton == singleton1);System.out.println(singleton.hashCode());System.out.println(singleton1.hashCode());}}class Singleton{//1.私有化构造方法private Singleton(){}//2.创建一个静态对象private static Singleton instance = new Singleton();//3.创建一个静态返回实例方法public static Singleton getInstance(){return instance;}
}

静态代码块创建实例

package singleton.type2;/*** @author: Hui**/
public class SingletonTest2 {public static void main(String[] args) {Singleton singleton = Singleton.getInstance();Singleton singleton1 = Singleton.getInstance();System.out.println(singleton == singleton1);System.out.println(singleton.hashCode());System.out.println(singleton1.hashCode());}}class Singleton {//1.私有化构造方法private Singleton() {}//2.创建一个静态对象private static Singleton instance;static {instance = new Singleton();}//3.创建一个静态返回实例方法public static Singleton getInstance() {return instance;}
}

优点:提前实例化,不存在线程并发等问题。

缺点:不符合懒加载情况,在不使用该实例的时候会造成内存浪费。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 自定义控件之绘图篇(三)区域(Range)
  • CTFShow的RE题(三)
  • 2024年水利水电安全员考试题库及答案
  • python自动化办公之cryptography加密解密
  • 【论文解读】AGENTLESS:揭开基于LLM的软件工程代理的神秘面纱,重塑软件工程自动化新基线
  • 力扣139 单词拆分 Java版本
  • 本安防爆手机:危险环境下的安全通信解决方案
  • 剖析DeFi交易产品之UniswapV3:交易路由合约
  • MySQL架构和工作流程
  • uniapp video视频铺满容器,不显示控件
  • DDR3(三)
  • EtherCAT主站IGH-- 9 -- IGH之eoe_request.h/c文件解析
  • SpringCloudGateway
  • go语言day10 接口interface 类型断言 type关键字
  • SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑
  • 自己简单写的 事件订阅机制
  • 【技术性】Search知识
  • Angular2开发踩坑系列-生产环境编译
  • Babel配置的不完全指南
  • codis proxy处理流程
  • Cookie 在前端中的实践
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JS基础之数据类型、对象、原型、原型链、继承
  • JS学习笔记——闭包
  • Mysql数据库的条件查询语句
  • Node + FFmpeg 实现Canvas动画导出视频
  • php中curl和soap方式请求服务超时问题
  • SpringCloud集成分布式事务LCN (一)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 彻底搞懂浏览器Event-loop
  • 试着探索高并发下的系统架构面貌
  • 微信小程序--------语音识别(前端自己也能玩)
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 用mpvue开发微信小程序
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 从如何停掉 Promise 链说起
  • ​批处理文件中的errorlevel用法
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Java NIO(一)FileChannel
  • # 职场生活之道:善于团结
  • #Java第九次作业--输入输出流和文件操作
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (003)SlickEdit Unity的补全
  • (7)STL算法之交换赋值
  • (Java入门)抽象类,接口,内部类
  • (k8s)kubernetes集群基于Containerd部署
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (SpringBoot)第七章:SpringBoot日志文件
  • (阿里云万网)-域名注册购买实名流程
  • (待修改)PyG安装步骤
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (转)c++ std::pair 与 std::make
  • (转)shell调试方法
  • .gitignore文件_Git:.gitignore