单例模式设计(一)

简介: 饿汉模式 由名字我们就可以知道 "饿汉" 嘛,就比较急切,在类加载的时候就创建实例:1. 写一个类,在本类中构造实例,用static修饰,直接创建出来(提供一个现有的实例)2. 在本类中写一个方法获取到上面的实例3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象

目录


饿汉模式


懒汉模式


懒汉模式优化


饿汉模式

由名字我们就可以知道 "饿汉" 嘛,就比较急切,在类加载的时候就创建实例:


1. 写一个类,在本类中构造实例,用static修饰,直接创建出来(提供一个现有的实例)


2. 在本类中写一个方法获取到上面的实例


3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象

//饿汉模式:直接 static 一个实例(线程安全)
//期望这个类只能有一个实例
public class Demo1 {
    //只构造一个实例
    private static Demo1 instance = new Demo1();
    //获取这个实例
    public static Demo1 getInstance() {
        return instance;
    }
    //把构造方法设置为私有 外部不能 new 这个类对象
    private Demo1(){}
}

懒汉模式

由名字我们就可以知道 "懒汉" 嘛,就比较从容~,它是等到有人调用的时候再创建实例:


1. 写一个类,在本类中构造实例,用static修饰,赋值为空(等待有人调用)


2. 在本类中写一个方法获取到上面的实例


3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象

//懒汉模式:
//期望这个类只能有一个实例
public class Demo2 {
    private static Demo2 instance = null;
    //获取这个实例
    public static Demo2 getInstance() {
        if (instance == null) {
            instance = new Demo2();
        }
        return instance;
    }
    //把构造方法设置为私有 外部不能 new 这个类对象
    private Demo2(){}
}


目录
打赏
0
0
0
0
1
分享
相关文章
线上服务故障处理原则
墨菲定律 任何事情都没有表面看起来那么简单 所有事情的发展都会比你预计的时间长 会出错的事情总会出错 如果担心某个事情发生,那么它更有可能发生 墨菲定律暗示我们,如果担心某种情况会发生,那么它更有可能发生,久而久之就一定会发生。
2349 0
|
6月前
|
Jedis高版本的JedisPoolConfig没有maxActive和maxWait
在高版本的Jedis中,连接池配置属性发生了一些变化。通过使用 `JedisPoolConfig`中的新属性,可以更好地管理和优化Redis连接池。本指南提供了详细的配置方法和示例代码,帮助开发者快速上手并正确配置Jedis连接池。希望本文对您有所帮助,能够在项目中高效地使用Jedis与Redis。
180 14
自动化运维的魔法:使用Python脚本简化日常任务
【8月更文挑战第50天】在数字化时代的浪潮中,自动化运维成为提升效率、减少人为错误的利器。本文将通过一个实际案例,展示如何利用Python脚本实现自动化部署和监控,从而让运维工作变得更加轻松和高效。我们将一起探索代码的力量,解锁自动化运维的神秘面纱,让你的工作环境焕然一新。
251 81
《主动式智能导购AI助手构建》解决方案用户评测
在部署体验过程中,官方提供的详尽文档和图表帮助新手轻松上手,但环境变量设置等问题仍需改进。解决方案采用Multi-Agent架构,百炼大模型实现精准推荐,函数计算优化响应速度。生产环境部署指导全面,但仍需加强异常处理和面向新手的教学资源。整体架构清晰高效,建议完善数据流描述及Router Agent算法逻辑的阐述。
177 10
《主动式智能导购AI助手构建》解决方案用户评测
阿里云先知安全沙龙(上海站)——后渗透阶段主机关键信息自动化狩猎的实现与应用
本文介绍了在后渗透测试中使用LSTAR工具和PowerShell脚本进行RDP状态查询、端口获取及凭据收集的过程,强调了高强度实战场景下的OPSEC需求。通过MITRE ATT&CK框架的应用,详细阐述了凭证访问、发现和收集等关键技术,确保攻击者能够隐蔽、持续且高效地渗透目标系统,最终获取核心数据或控制权。文中还展示了SharpHunter等工具的自动化实现,进一步提升了操作的安全性和效率。
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
518 0
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
395 1
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
1304 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等