本帖最后由 王文辉 于 2015-7-23 10:27 编辑
相信大家对单例设计模式已经很熟悉
两种方式的区别:
在第二步时,饿汉式:private static Single s = new Single();
懒汉式:private static Single s = null;//在定义返回对象的方法时,判断没有对象才创建
上面是大家可能都了解的,还有一点是懒汉式存在的安全问题:
在使用多线程,两个线程同时执行到 if(s == null),这时如果s为null,会创建两个对象,这样就违背了对象在内存中的唯一性。
注意:因为计算机的执行效率很高,出现这种问题的几率很小,但是确实存在这个安全问题
单例设计模式:
1,私有化构造函数
2,创建私有并静态的本类对象
3,定义公有并静态的方法,返回该对象
饿汉式:
class Single{
//私有化构造函数
private Single(){
}
//私有并静态本类对象
private static Single s = new Single();
//定义公有并静态的方法,返回该对象
public static Single getInstance(){
return s;
}
}
//懒汉式(延迟加载方式)
class Single{
//私有化构造函数
private Single{
}
//创建私有并静态的本类对象
private static Single s = null;
//定义公有并静态的方法,返回该对象
public static Single getInstance(){
if(s==null){
s=new Single();
}
return s;
}
}
|
|