单子模式,就是给外界提供唯一实例,例如我们打开一个文档或者ppt文件时,只有一个窗口,为什么要使用呢?如果窗口开多了不是浪费资源。而且使用单子模式还可以防止在外界实例化本类,增加了程序的安全性。
/**
* @第一种方式
*/
public class Singletion {
private static Singletion single = new Singletion();
private Singletion() {
}
public static Singletion getSingInstance() {
return single;
}
}
/**
* @第二种方式
*/
public class Singletion {
private static Singletion single;
private Singletion() {
}
public static Singletion getSingInstance() {
if (single == null) {
single = new Singletion();
}
return single;
}
}
两种不同实现方式的区别:
<1> 从资源利用的角度看,第二种是在调用其静态方法的时候才被实例化的,所以要比第一种稍好一些。
<2> 从反映时间和速度上看,第一种在类加载的时候就得到了初始化,所以要比第二种好一些。
由上可见,创建一个单子类必须满足以下三个条件:
1.构造器私有
2.自己持有自身的一个静态引用
3.对外面系统提供访问唯一实例的公共静态接口(方法).