Java设计模式之单例模式

一、什么是单例模式

确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

二、单例模式特点

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

单例模式保证了全局对象的唯一性,比如系统启动读取配置文件就需要单例保证配置的一致性。

三、线程安全问题

一方面在获取单例的时候,要保证不能产生多个实例对象;

另一方面,在使用单例对象的时候,要注意单例对象内的实例变量是会被多线程共享的,推荐使用无状态的对象,不会因为多个线程的交替调度而破坏自身状态导致线程安全问题,比如我们常用的VO,DTO等(局部变量是在用户栈中的,而且用户栈本身就是线程私有的内存区域,所以不存在线程安全问题)。

四、单例模式的优点

系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。
五、单例模式的缺点

当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用new,可能会给其他开发人员造成困扰,特别是看不到源码的时候。
六、单例模式的使用场景

• 需要频繁的进行创建和销毁的对象;

• 创建对象时耗时过多或耗费资源过多,但又经常用到的对象;

• 工具类对象;

• 频繁访问数据库或文件的对象。

相关推荐
爱装代码的小瓶子12 分钟前
【Linux基础】操作系统下的进程与虚拟内存的关系
android·java·服务器
淮北49414 分钟前
大模型学习(二、使用lora进行微调)
java·服务器·学习
瑞雪兆丰年兮15 分钟前
[从0开始学Java|第一天]Java入门
java·开发语言
我爱娃哈哈15 分钟前
SpringBoot 实现 RSA+AES 自动接口解密
java·spring boot·后端
崎岖Qiu15 分钟前
SpringBoot:基于注解 @PostConstruct 和 ApplicationRunner 进行初始化的区别
java·spring boot·后端·spring·javaee
东东最爱敲键盘17 分钟前
第7天 进程间通信
java·服务器·前端
九皇叔叔19 分钟前
【04】SpringBoot3 MybatisPlus 查询(Mapper)
java·mybatis·mybatis plus
人道领域21 分钟前
javaWeb从入门到进阶(SpringBoot基础案例)
java·开发语言·spring
老蒋每日coding24 分钟前
AI Agent 设计模式系列(二十一)—— 探索和发现设计模式
人工智能·设计模式
u01040583625 分钟前
利用Java CompletableFuture优化企业微信批量消息发送的异步编排
java·开发语言·企业微信