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

news2024/11/19 7:47:20

单例设计模式(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();
        }
    }
    

在这里插入图片描述

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

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

相关文章

信通院智能体标准发布,实在智能牵头编写

4月28日,由人工智能关键技术和应用评测工业和信息化部重点实验室、中国信息通信研究院(以下简称:中国信通院)人工智能研究所共同主办的“人工智能”高质量发展研讨会顺利召开,会上中国信通院正式发布全国首个Agent&…

Java12基础(Package包 作用域 String字符串)

目录 一. Package包 import关键字 命名规范 二. 作用域 三. String字符串(进阶) 创建方式: 内存情况: 1. 字符串的搜索 2. trim()方法 3. 替换字符串 4. 分割字符串 5. 拼接字符串 6. 格式化字符串 7. 类型转换 8. 转换为char[ ]字符数组 9. 字符编码 10. Str…

抖店内卷严重,平台规则繁琐,商家如何应对这种现状?

我是王路飞。 随着抖音的快速发展和扩张,抖音电商版块也在不断演进玩法和提高门槛。 然而也正是走的太快了,导致很多商家已经有些跟不上平台的繁琐规则。 压力更大的是,抖音电商的内卷逐渐严重,很多人被迫成为了“六边形战士”…

Vulstack红队评估(一)

文章目录 一、环境搭建1、网络拓扑2、web服务器(win7)配置3、域控(winserver2008)配置4、域内机器(windows 2003)配置5、调试网络是否通常 二、web渗透1、信息搜集2、端口扫描3、目录扫描4、弱口令5、phpmyadmin getshell日志gets…

OPC :快速上手

本系列为OPC技术的快速上以及持续研究和技术实战专栏,将不定期更新。 本章节提供OPC系列技术博文的快速导航。 《OPC服务器简介和入门介绍》 《物联网平台如何为OPC服务器创造新生命力》 《OPC服务器开发之WtOPCSvr——开发文档(1)》 《OPC服…

Linux 磁盘管理命令fdisk mount umount mkfs mkfs.ext2

文章目录 3.Linux 磁盘管理命令3.4 fdisk:磁盘分区案例练习 3.5 mount:挂载文件系统案例练习 3.6 umount:卸载文件系统案例练习 3.7 mkfs:建立各种文件系统案例练习 3.8 mkfs.ext2:建立一个 Ext2/Ext3 文件系统案例练习…

番外篇 | YOLOv8改进之在C2f中引入MSBlock模块(来源于YOLO-MS) | 轻量化网络结构

前言:Hello大家好,我是小哥谈。YOLO-MS是一种基于YOLO(You Only Look Once)的目标检测算法,它利用多尺度特征图提取和融合的方式来检测不同尺度的物体。YOLO-MS在准确率和速度方面都有很好的表现,特别适用于实时场景下的物体检测。在YOLO-MS提出的一种针对于实时目标检测…

Python | Leetcode Python题解之第70题爬楼梯

题目: 题解: class Solution:def climbStairs(self, n: int) -> int:a, b 1, 1for _ in range(n - 1):a, b b, a breturn b

新火种AI|AI让大家都变“土”了!

作者:一号 编辑:美美 AI不仅要把人变“土”,还要把人变多样。 这个世界,终究是变“土”了。 今年五一假期,一个名为“Remini”的AI修图APP火遍了全网。注意,是Remini,而不是Redmi&#xff0…

用Rust解决鸡兔同笼问题

目录 一、什么是鸡兔同笼问题? 二、用Rust解决鸡兔同笼问题 三、鸡兔同笼问题在实际生活中的应用有哪些? 一、什么是鸡兔同笼问题? 鸡兔同笼问题是一种古代著名的数学问题,用于训练逻辑思维和解决方程的能力。 鸡兔同笼问题起…

发布-订阅(Publish-Subscribe)C++实现

1、原理 发布-订阅(Publish-Subscribe)模式是一种消息传递模式,用于构建分布式系统中的通信机制。在这种模式下,消息的发送者(发布者)和消息的接收者(订阅者)之间通过一个称为“主题…

中国4月进口以美元计同比增长8.4%,出口同比增长1.5%

中国按美元计4月进出口同比增速均转负为正,双双超预期。 5月9日周四,海关总署公布数据显示,以美元计价,中国2024年4月进口同比增长8.4%至2201亿美元,前值同比下降1.9%,出口同比增长1.5%至2924.5亿美元&…

景源畅信:抖音小店有哪些人气品类?

抖音小店作为短视频平台中的一股清流,已经成为了众多商家和消费者关注的焦点。在这个平台上,有各种各样的商品琳琅满目,让人眼花缭乱。那么,抖音小店有哪些人气品类呢?下面就从四个不同的方面来详细阐述这个问题。 一、美妆护肤类…

华为eNSP Pro模拟器下载(普通账号可用)

好消息!华为终于开放了普通账号使用权限! 安装教程下载后见《指导手册-eNSP Pro V100R001C00.pdf》 华为eNSP Pro模拟器下载(普通账号可用) 下载地址 华为eNSP Pro模拟器下载(普通账号可用) - 下一朵云 …

基于springboot+jsp+Mysql的商务安全邮箱邮件收发

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Goland开发者软件激活使用教程

Goland开发者工具: Goland是由JetBrains公司推出的专门针对Go语言设计的集成开发环境(IDE)。这款工具具有智能的代码补全、强大的代码导航和重构功能,同时提供了丰富的调试工具,能够满足Golang开发者的各种需求。 Gol…

蓝桥杯省三爆改省二,省一到底做错了什么?

到底怎么个事 这届蓝桥杯选的软件测试赛道,都说选择大于努力,软件测试一不卷二不难。省赛结束,自己就感觉稳啦,全部都稳啦。没想到一出结果,省三,g了。说落差,是真的有一点,就感觉和自己预期的…

nacos下载安装和nacos启动报错

nacos简介: Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您…

Mysql8.0.30一次表锁问题的解决

起因 给material_config_field_data表的字段建立全文索引的时,发现该表卡死,然后无法对该表进行任何操作。 查找问题 执行sql #这个命令会显示InnoDB存储引擎的详细状态信息,包括锁等待和锁争用的信息 SHOW ENGINE INNODB STATUS结果 复制S…

智慧营销的未来:中国AIGC技术的演进与应用 #未来是现在的趋势#

📑前言 随着人工智能(AI)技术的蓬勃发展,尤其是在营销技术(MarTech)领域,AIGC(AI Generated Content)技术在中国市场的应用和影响日益显著。2023年,中国在AIG…