【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;//null
    private 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();
        }
    }
    

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2-6 任务 猜数小游戏(单次版)

本任务要求编写一个猜数小游戏(单次版),游戏规则是计算机产生一个0到100之间的随机整数,用户通过输入猜测的数字进行猜测,根据猜测情况给出提示,直到猜对为止。编程思路是利用while循环和多分支结构实现永真…

python代码无法点击进入,如何破???

python代码无法点击进入,如何破??? 举个栗子: model.chat是无法进入的,这时可以使用如下的命令进行操作: ?model.chat

Faiss核心解析:提升推荐系统的利器【AI写作免费】

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

今天又发现一个有意思的问题:SQL Server安装过程中下载报错,证明GPT是可以解决问题的

我们在安装数据库的时候,都会有报错问题,无论是Oracle、SQL Server、还是MySQL,都会遇到各种各样的报错,这归根到底还是因为电脑环境的不同,和用户安装的时候,操作习惯的不一样导致的问题。今天的问题是&am…

当前主机使用的磁盘以及带宽情况

今日看到有用户在论坛留言反馈他买了Hostease Linux虚拟主机,想要查看当前主机使用的磁盘以及带宽情况,但是不知道如何查看。因为这边也是对于Hostease的虚拟主机产品是有所了解的,知道他们都是默认带管理面板的操做起来很方便的,…

漫威争锋Marvel Rivals申请测试资格教程 最新获取测试资格教程

即将震撼登场的《漫威争锋》(Marvel Rivals)标志着PvP射击游戏领域的全新突破,由漫威官方网站全力支持推出。这款游戏定于5月11日早晨9点启幕其封闭Alpha测试章节,这场测试盛宴将持续整整十天。在首波测试浪潮中,玩家有…

如何使用IntelliJ IDEA SSH连接本地Linux服务器远程开发

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

今天是二叉树~

本文为博客:东哥带你刷二叉树(纲领篇) | labuladong 的算法笔记的笔记 前言 将二叉树的思想传递至动态规划,回溯算法,分治算法,图论算法! 对于二叉树的每一个结点,我们需要思考的是…

数据分析必备:一步步教你如何用numpy改变数据处理(8)

1、Numpy 数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 1.1、修改数组形状 numpy.reshape numpy.reshape 函数可以在不改变数据的条件下修改形状&a…

【热门话题】如何通过AI技术提升内容生产的效率与质量

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 如何通过AI技术提升内容生产的效率与质量引言一、自然语言处理(NLP&…

win11安装SQL Server 2012 企业版

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、硬件要求二、软件安装参考&#xff1…

uniapp开发的小程序toast被键盘遮挡提示内容无法完全显示问题解决

文章目录 问题描述问题解决参考链接: 问题描述 在开发抖音小程序后,当用户提交反馈后,调用了系统的toast来显示是否提交成功,结果被系统的键盘给盖住,无法显示完全。 即,简单来说:Toast会被弹…

韩顺平0基础学Java——第4天

p45—p71 老天鹅,居然能中断这么久,唉...学不完了要 API API:application programing interface应用程序编程接口 www.matools.com 可以理解成Python的调包...c的头文件对吧 字符型 char用单引号 String用双引号 char本质上是个整数&#xff0c…

AutoTable, Hibernate自动建立表替代方案

痛点 之前一直使用JPA为主要ORM技术栈,主要是因为Mybatis没有实体逆向建表功能。虽然Mybatis有从数据库建立实体,但是实际应用却没那么美好:当实体变更时,往往不会单独再建立一个数据库重新生成表,然后把表再逆向为实…

Pygame简单入门教程(绘制Rect、控制移动、碰撞检测、Github项目源代码)

Pygame简明教程 引言:本教程中的源码已上传个人Github: GItHub链接 视频教程推荐:YouTube教程–有点过于简单了 官方文档推荐:虽然写的一般,但还是推荐! Navigator~ Pygame简明教程安装pygame一、代码框架二、案件输入…

小红书释放被封手机号 无限注册

前几年抖音也可以释放被封手机号 那时候都不重视 导致现在被封手机号想释放 基本不可能的 或者就是最少几百块 有专业的人帮你通过某些信息差释放 本教程是拆解 小红书被封手机号怎么释放,从今年开始,被封的手机号无法注销了 所以很困扰 那么本教程来…

如何区分APP页面是H5还是原生页面?

刚刚接触手机测试的同学,或多或少都有过这样的疑问:APP页面哪些是H5页面?哪些是原生页面?单凭肉眼,简直太难区分了!我总结了6个小技巧,希望能帮大家答疑解惑。 1、看断网的情况 断开网络,显示…

【生信技能树】拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图?

拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图? 目录 预备知识 绘制箱线图示例 预备知识 1.pivot_longer函数 pivot_longer 是tidyr包中的一个函数,用于将数据框(data frame)从宽格式转换为长格式。在宽格…

CPU、GPU,那NPU是,神经网络到底能做什么!

人工智能时代即将到来。随着人工智能的不断推进,英特尔、AMD和高通等公司也在着眼于各种硬件配置方面。随着NPU(神经网络处理器)的引入,人工智能的应用过程将被加快。 苹果在其芯片中使用NPU已经很多年了,所以NPU并不是…

《深入Linux内核架构》第4章 进程虚拟内存(2)

目录 4.3 内存映射原理 4.4 数据结构 4.4.1 树和链表 4.4.2 虚拟内存区域VMA的表示 4.4.3 相关数据结构 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 本节讲VMA结构体struct vm_area_struct和struct address_space。 4.3 内存映射原理 所有进…