在我们编程过程中经常会用到单例模式,可能有时候觉得应该用了。
我在用的过程中产生了如下几个问题
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;
}
}