Java 设计模式——单例模式

本文详细解释了单例模式的概念及其应用场景,并通过一个简单的购票系统案例说明了单例模式的重要性。此外,还探讨了使用单例模式对程序性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们编程过程中经常会用到单例模式,可能有时候觉得应该用了。

我在用的过程中产生了如下几个问题

1.什么是单例模式?

2.为什么要使用单例模式?

3.使用单例模式对程序有什么影响?

现在一一对上面的问题进行解答,也算是对自己这段时间学习单例模式的一个总结。


1.顾名思义,单例就是只有一个实例,无论什么时候都只有一个实例,而且当你要使用的时候才会创建

2.举个例子,现在我们把火车票订票系统简化,当你在买票的时候,系统就相当于使用了单例模式,因为同一时间不会产生多张相同号码的车票。如果我们不使用单例模式就会出现下面的情况,两个人同时购买去往同一地方的票,就可能会产出两张相同的票。

3.使用单例模式就会让线程等待,这就导致程序会有一定程度的延迟,如果你对系统的实时性要求比较高,这可能就不太合适,如果并没有多大的影响,那么这会是不错的选择。


最后,贴一段代码


使用双重检查加锁

public class SinglePattern {
	//volatile 确保instance被初始化为SinglePattern实例时,多个线程正确处理instance变量
	private volatile static SinglePattern instance;
	//构造函数使用私有的,其他类就不能实例化SinglePattern对象了
	private SinglePattern() {
	}
	public static SinglePattern getInstance() {
		//首先判断是否创建
		if (instance == null) {
			//进入同步
			synchronized (SinglePattern.class) {
				//再次判断
				if (instance == null) {
					instance = new SinglePattern();
				}
			}
		}
		return instance;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值