单子模式,顾名思义,就是在整个应用过程中只向外界提供唯一的一份实例。很多时候我们有这样的需求,譬如当我们在计算机上多次点击打开回收站或者某个PPT时,实际只会在我们面前呈现一个窗口。为啥?多开窗口浪费资源造成混乱啦。这就是单子模式的运用。
单子模式的JAVA实现有两种形式: 一种是饿汉式(较为常用),一种是懒汉式
两种不同实现方式的区别:
<1> 从资源利用的角度看,懒汉式是在调用其静态方法的时候才被实例化的,所以要比饿汉式稍好一些。
<2> 从反映时间和速度上看,饿汉式在类加载的时候就得到了初始化,所以要比懒汉式好一些。
由上可见,创建一个单子类必须满足以下三个条件:
1.构造器私有
2.自己持有自身的一个静态引用
3.对外面系统提供访问唯一实例的公共静态接口(方法).
测试例子 用饿汉式实现
package signel;
public class Sangle
{
double db;
private static Sangle s = new Sangle();//定义一个私有的对象
private Sangle() //构造器私有
{
db = Math.random();
}
private static Sangle getExample() //定义一个私有静态的方法获得唯一实例
{
return s;
}
public double getS() //测试是否为唯一实例
{
return db;
}
public static void main(String[] args)
{
Sangle s1 = Sangle.getExample();
Sangle s2 = Sangle.getExample();
System.out.println(s1.getS());
System.out.println(s2.getS());
System.out.println("由于只获得了一个实例,所以生成的随机数都是相同的!");
}
}<span style="color:#ff0000;">
</span>