单例设计模式两种写法:
单例用代码体现
1,将构造函数私有化;
2,在类中创建一个本类对象.
3,提供一个方法可以获取到本类的对象.//先初始化对象,称为:饿汉式(开发用),建立单例时使用
//Single类一进内存,就已经创建好了对象.
class Single{
private Single(){}
private static Single s = new Single();
public static Single getInstance(){
return s;
}
}
//对象时方法被调用时,才初始化,也叫做对象的延时加载.称为懒汉式
//Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象.
class Single{
private Single(){}
private static Single s = null;
public static Single getInstance(){
if(s == null) //优化 if(s == null)
s = new Single(); { synchronized(Single.class){
return s; if(s == null)
} s = new Single();
} }
} return s;}}
因为JVM在非常多次运行中,可能会出现不判断s==null,所以更安全的是在函数上加synchronized.
还有一种写法
class Single{
privateSingle(){}
public static final Single INSTANCE = new Single();//final修饰时,变量的值一设置就不能修改
}