Java设计模式之单例设计模式

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

单例设计模式包括两种:饿汉式和懒汉式。

        饿汉式:

含义:

在类加载时就创建并初始化单例对象。这种方式确保了多线程环境下保持单例的唯一性

对象通常是重量级对象,饿汉式可能造成创建了对象,但是没有使用。

步骤:

  • 构造器私有化===》防止直接new
  • 类的内部创建对象
  • 向外暴露一个静态的公开方法

整体就是,用static修饰一个对象,然后将构造器私有化,保证外界无法调用构造器,然后向外暴露一个static修饰的public方法,该方法能返回该目标对象,所以只能在这个方法调用目标对象。

那为什么说是饿汉式:原因是,对象用static修饰后,在编译时就以创建并初始化完毕,显得很着急,所以叫饿汉式。

        懒汉式:

含义:

懒汉式是一种延迟加载的方式来创建单例对象,单例对象在首次被请求时才会被实例化

步骤:

  • 构造器私有化

  • 定义一个静态属性对象

  • 提供一个public的static方法,可以返回一个对象

  • 懒汉式,只有当用户使用时,才返回该对象,后面再次调用,会返回上次创建的对象

  • 从而保证了单例 不会调用构造器,因为没有创建一个对象

案例:

class caT {private String name;public static int n1 = 999;private static caT cat;//定义一个静态属性对象 默认为空private caT(String name) {System.out.println("构造器被调用");this.name = name;}public static caT getInstance(){if(cat == null){//如果没有创建cat对象  第二次就不为空,就不会调用了cat = new caT("旺财");//这里创建了caT对象,会调用构造器}return cat;}}

只有调用是才进行初始化对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人脸表情识别系统项目完整实现详解——(三)训练MobileNet深度神经网络识别表情

摘要:之前的表情识别系统升级到v3.0版本,本篇博客详细介绍使用PyTorch框架来构建并训练MobileNet V3模型以进行实现表情识别,给出了完整实现代码和数据集可供下载。从构建数据集、搭建深度学习模型、数据增强、早停等多种技术,到模…

计算联合体union的大小

一:联合类型的定义 联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体) 比如:共用了 i 这个较大的空间 二: 联合的特点 …

Userar vr和3d技术如何结合融合

在增强现实(AR)和虚拟现实(VR)领域,动作捕捉技术是一项关键技术,它可以捕捉人体的运动和动作,并将其应用到虚拟环境中,从而实现更加真实和沉浸式的用户体验。以下是常见的AR和VR动作…

MySQL--Buffer Pool

虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。为此,Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库的读写性能。 有了缓冲池后: …

Eclipse For ABAP:安装依赖报错

1.安装好Eclipse后需要添加依赖,这里的地址: https://tools.hana.ondemand.com/latest 全部勾选等待安装结束; 重启后报错:ABAP communication layer is not configured properly. This might be caused by missing Microsoft Visual C++ 2013 (x64) Runtime DLLs. Consu…

小程序云开发实战:通用企业产品信息展示小程序

之前做小程序都是自己搭建数据管理后台,比如我之前做的小程序:一搜就学,就是使用java来做管理后台,小程序做前端展示。但是对于简单的小程序来说,做一套管理后台有点拿大炮打蚊子,所以使用云开发就是不错的…

【tensorflow_gpu】安装合集

tensorflow_gpu与CUDA、cuDNN、Python版本对应关系 版本对应列表 tensorflow的清华源wheel tensorflow的清华源wheel列表 tensorflow_gpu安装指令 使用conda安装指定版本的tensorflow_gpu conda install tensorflow-gpu1.2.0使用wheel安装指定版本的tensorflow_gpu pip …

【开源】SpringBoot框架开发知识图谱构建系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 知识图谱模块2.2 知识点模块2.3 学生测评模块2.4 学生成绩模块 三、系统展示四、核心代码4.1 查询知识点4.2 新增知识点4.3 查询知识图谱4.4 查询学生成绩4.5 查询学生成绩 五、免责说明 一、摘要 1.1 项目介绍 基于J…

Springboot vue elementui 停车场管理系统

Springboot vue elementui 停车场管理系统 点击获取全套源码

论文阅读:Forget-Me-Not: Learning to Forget in Text-to-Image Diffusion Models

Forget-Me-Not: Learning to Forget in Text-to-Image Diffusion Models 论文链接 代码链接 这篇文章提出了Forget-Me-Not (FMN),用来消除文生图扩散模型中的特定内容。FMN的流程图如下: 可以看到,FMN的损失函数是最小化要消除的概念对应的…

一文了解AI长文本工具:Kimi Chat;与ChatGPT比较对比

一文了解AI长文本工具:Kimi Chat;与ChatGPT比较对比 在人工智能领域,ChatGPT、Claude2.1和Kimi Chat都是备受关注的大型模型。它们在文本生成、理解和处理方面展现了强大的能力。本文将深入探讨这三个工具的核心功能、优劣势以及适用场景&am…

网口变压器电感的工艺结构原理及选型参数总结

🏡《总目录》 目录 1,概述2,工作原理3,结构特点3.1,信号隔离3.2,电磁兼容性3.3,耐高电压3.4,简单易用4,工艺流程4.1,设计绕组结构4.2,切割铁心4.3,加工线圈4.4,绕线绕组4.5,匝间隔离

5.2.7、【AI技术新纪元:Spring AI解码】Transformers (ONNX) Embeddings

ONNX格式的Transformers嵌入 TransformersEmbeddingClient是一个实现EmbeddingClient接口的类,它使用所选的句子变换器在本地计算句子嵌入。 该类利用预先训练好的转换器模型,以Open Neural Network Exchange (ONNX)格式序列化。 通过应用Deep Java Library和Microsoft ON…

Markdown快速入门(常用技巧)

目录 说明常用书写技巧1.标题分级2.代码块3.字体4.引用语法5.分割线6.图片插入(本地/网络)7.超链接8.列表9.表格10.换行(两个空格)11.插入公式12.脚注 说明 markdown实际上类似于网页,可以根据喜欢设置其样式变化,创建…

iOS18系统中,苹果可能不再使用Siri,转用Gemini

生成式人工智能(Generative AI)是苹果公司近两年来默默投资的强大人工智能工具。 坊间流有多种传闻,官方最近终于曝光结果:苹果和谷歌正在谈判将 Gemini AI 引入 iPhone,预计将于今年在所有 iOS 18 设备上推出。 到目前…

GitHub Copilot怎么取消付费?

0. 前言 GitHub Copilot非常好用,还没有使用过的同学可以参考教程白嫖一个月:【保姆级】VsCode 安装GitHub Copilot实操教程 GitHub Copilot每月10美元的费用对于一些用户来说可能是一笔不小的开销。如果你已经完成了GitHub Copilot的免费试用&#xf…

【超详细图文讲解】如何利用VMware创建CentOS虚拟机(包括如何更改网络设置 + 远程访问虚拟机方法)

文章目录 前言1. 准备相关软件环境1.1 获取 ISO 镜像包1.2 VMware 的安装 2. 使用 VMware 安装 CentOS3. 初始化虚拟机4. 虚拟机网络的设置4.1 虚拟机的三种网络连接模式桥接模式NAT 模式仅主机模式 4.2 如何更改网络设置 5. 远程访问虚拟机的方法5.1 使用 cmd 进行访问5.2 使用…

React 系列 之 React Hooks(一) JSX本质、理解Hooks

借鉴自极客时间《React Hooks 核心原理与实战》 JSX语法的本质 可以认为JSX是一种语法糖,允许将html和js代码进行结合。 JSX文件会通过babel编译成js文件 下面有一段JSX代码,实现了一个Counter组件 import React from "react";export defau…

基于python+vue的幼儿园管理系统flask-django-php-nodejs

随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建幼儿园管理系统。本文通过课题背景、课题目的及意义相关技术,提出了一种活动信息、课程信息、菜谱信息、通知公告、家…

网站安全:抵御网络攻击的几个安全措施

随着互联网的发展,网站安全成为每个企业和个人都必须重视的问题。黑客攻击不断增多,威胁着网站的稳定性和数据的安全。为了应对这一挑战,我们必须采取一系列的安全措施,确保网站的安全与稳定。 不过,关于在做好网络安全…