【Java基础】设计模式——单例设计模式

单例设计模式(Singleton Design Pattern)是一种创建型设计模式,它确保⼀个类有且只有⼀个实例,并提供一个全局访问点来访问这个唯一实例。

单例模式主要解决的是,⼀个全局使⽤的类频繁的创建和消费,从⽽提升整体的代码性能。

思路

  1. 让构造方法不能被外界使用,在类内部创建对象:将构造方法修饰为private
  2. 把构造方法修饰为private,一个对象都不能创建了
    私有的在本类中可以使用,所以在本类中创建一个对象
  3. 为了让外界能够获取到这个对象,需要把该对象修饰为static
    但是外界可以赋不合法的数值,所以再修饰为private
  4. 对象被修饰为private的,外界就得不到这个对象了。
    所以需要提供public的方法把该对象返回。
    因为外界不能创建对象,所以该方法只能是静态的。
class Single//饿汉式
{private static Single single=new Single();private Sing1e(){}public static Single getInstance(){return single;}
}
class Singles//懒汉式:线程不安全
{private static Singles s;//nullprivate Singles(){};public static Singles getInstance(){if(s==null)s=new Singles();return s;}
}
class Demo9
{public static void main(String[] args){//Single s=new Single();//Single.single=null;Single s1=Single.getInstance();Single s2=Single.getINstance();System.out.println(s1==s2);}
}
  • e.g.: 工厂加工零件,工厂实现单例

    class Factory
    {private int num;private static Factory factory=new Factory();private Factory(){}public static Factory getInstance(){return factory;}public void jiaGong( ){System.out.println("这是加工的第"+(++num)+"个零件");
    }
    class Demo10
    {public static void main(String[] args){Factory gc=Factory.getInstance();gc.jiaGong();gc.jiaGong();gc.jiaGong();gc.jiaGong();gc.jiaGong();Factory gc2=Factory.getInstance();gc2.jiaGong();gc2.jiaGong();gc2.jiaGong();gc2.jiaGong();gc2.jiaGong();}
    }
    

在这里插入图片描述

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

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

相关文章

vivado 低级别 SVF JTAG 命令

低级别 SVF JTAG 命令 注释 : 在 Versal ™ 器件上不支持 SVF 。 低级别 JTAG 命令允许您扫描多个 FPGA JTAG 链。针对链操作所生成的 SVF 命令使用这些低级别命令来访问链中的 FPGA 。 报头数据寄存器 (HDR) 和报头指令寄存器 (HIR) 语法 HDR length […

JAVA-猜数字游戏

以下是一个简单的Java猜数字游戏的代码。 import java.util.Random; import java.util.Scanner; public class GuessNumberGame { public static void main(String[] args) { Random rand new Random(); int secretNumber rand.nextInt(100) 1; // 生成1到100之间的随…

功率半导体测试挑战及应对方案详解

功率半导体是电子产业链中最核心的一类器件, 能够实现电能转换和电路控制作用。功率半导体包括功率半导体分立器件(含模块)以及功率IC等。其中,功率半导体分立器件按照器件结构可分为二极管、晶闸管和晶体管等。 以MOSFET、IGBT以及SiC MOSFET为代表的功…

【教学类-53-01】20240509“去掉背景的png彩色图片”转“黑色影子图”

作品展示 背景需求: 刚写完蒙德里安涂色学具,准备开课,转眼班级就“百日咳“”隔离3周,o(╥﹏╥)o 我的AI对话大师只剩1个月的有效期,剩下9万6千次也马上就作废了。 最后一个月可以尽量多用掉一些,我从小…

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析 1.概述2. ConfigFileApplicationListener定义3. ConfigFileApplicationListener回调链路3.1 SpringApplication#run3.2 SpringApplication#prepareEnvironment3.3 配置environment 4. 环境准备事件 Config…

leetcode 2320.统计放置房子的方式数

思路:dp 其实我们不难发现,如果我们按照单侧来说,并且让我们求最大价值的话,这就是一个打家劫舍的动态规划问题。 但是这里我们需要求方案数。所以这里我们的dp含义就变成了:在前i块地皮中放置房子的方案数。 首先就…

第十篇:数字堡垒:操作系统安全深度解析与实战指南

数字堡垒:操作系统安全深度解析与实战指南 1 *引言 1.1 数字世界的守护者 在遥远的比特海中,有一座名为“操作系统”的数字堡垒,它守护着我们的数据宝藏,确保每一次计算的航行都能安全抵达彼岸。然而,这片海域并非风…

2024年最新【SpringBoot2】开发实用篇-测试_springboot2 test(1),2024年最新2024春招BAT面试真题详解

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化! 由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、…

推荐一个好用的数据集处理脚本

前段时间在整理数据集,但是需要先处理一下数据集,批量的修改图片的名字,因此找了一下的代码,这非常好用,分享给大家。 注意事项:转换后,这脚本会把你之前文件夹的内容全删掉。 import osclass …

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay8

腾讯视频 C多态性如何体现?模版怎么实现的多态? C中的多态性主要通过两种方式体现:虚函数(动态多态性)和模板(静态多态性)。 虚函数实现的多态性:通过基类指针或者引用&#xff0…

YOLOv5,YOLOv7改进之结合​SOCA

1.SOCA moudle结构图 2,YOLOv5,YOLOv7改进之结合​SOCA 1.配置common.py文件 #SOCA moudle 单幅图像超分辨率 class Covpool(Function):@staticmethoddef forward(ctx, input):x = inputbatchSize = x.data.shape[0]dim = x.data.shape[1]h = x.data.shape[2]w = x.data.sha…

微信小程序开发秘籍:解锁地理位置服务与周边信息探索

微信小程序开发秘籍:解锁地理位置服务与周边信息探索 一、地理信息服务基础1.1 什么是地理信息服务?1.2 微信小程序中的GIS API简介 二、获取用户位置:wx.getLocation实战2.1 API介绍2.2 代码示例 三、周边信息获取:利用腾讯位置服…

docker Harbor私有仓库部署管理

搭建本地私有仓库,但是本地私有仓库的管理和使用比较麻烦,这个原生的私有仓库并不好用,所以我们采用harbor私有仓库,也叫私服,更加人性化。 一、什么是Harbor Harbor是VWware 公司开源的企业级Docker Registry项…

android TV app适配遥控器思路,recycleview选中放大

背景: 1、当遥控器遥控盒子,app内是有一套机制,响应遥控器的操作; 2、要实现遥控器选中的效果,必须要设置setOnFocusChangeListener方法,另外一个就是设置view的setOnClickListener方法;设置完之后&#…

安卓开发--按键跳转页面,按键按下变色

前面已经介绍了一个空白按键工程的建立以及响应方式,可以参考这里:安卓开发–新建工程,新建虚拟手机,按键事件响应。 安卓开发是页面跳转是基础!!!所以本篇博客介绍利用按键实现页面跳转&#…

C语言自定义数据类型

一.结构体 1.结构体 I.基本格式 struct tag {member-list; }variable-list; II.结构体声明 struct PERSON // 结构体声明 {int age; // 声明成员类型long ss;float weight;char name[25]; } family_member; // 定义结构体变量fa…

day1_slidingWindow

一、滑动窗口模板 // 注意:java 代码由 chatGPT🤖 根据我的 cpp 代码翻译,旨在帮助不同背景的读者理解算法逻辑。 // 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 cpp 代码对比查看。import java.util.Has…

Robots协议的一点知识

Robots协议,通常指的是robots.txt协议,是一种网站管理员用来告诉搜索引擎蜘蛛(也称为爬虫或机器人)哪些页面可以被抓取,哪些不可以的文本文件。这个协议也被称为排除标准(Robots Exclusion Protocol&#x…

linux环境下安装《车辆动态监控系统》支持JT808、JT1078、苏标主动安全设备接入

《车辆动态监控系统》安装包下载地址 开放端口 80/443/8800,web后台端口,nginx代理服务,nginx默认为8800端口8808,JT808专用端口6802,视频播放推流端口6891-6898,FTP端口6821,苏标主动安全附件…

【算法】滑动窗口——水果成篮

本篇博客是我对“水果成篮”这道题由暴力解法到滑动窗口思路的具体思路,有需要借鉴即可。 目录 1.题目2.暴力求解3.暴力优化3.1每次right不用回退3.2有些left长度一定不如前一个,不用走,left不回退 4.滑动窗口算法5.总结 1.题目 题目链接&am…