singleton模式:
在JAVA中可能有些类我们希望在内存中只存在一个实例,我们就可以用单例模式了。这样做的好处就是避免了垃圾回收器频繁地实例化对象,销毁对象。从而浪费系统时间。下面是一个简单的单例实现:
public class SingletonDemo {
private int a = 0;//定义这个变量是用来测试用的
private static SingletonDemo singletonDemo = null;
private SingletonDemo()//这里的构造器只会调用一次
{
System.out.println("......in constructor");
}
public static SingletonDemo getSingletonInstance()//获得实例的方法
{
if(singletonDemo==null)//判断对象是否已经存在
{
singletonDemo = new SingletonDemo();//
}
return singletonDemo;
}
public static void main(String[] args) {//测试用的MAIN方法
SingletonDemo sd = SingletonDemo.getSingletonInstance();
SingletonDemo sd2 = SingletonDemo.getSingletonInstance();
System.out.println("sd a="+sd.a++);
System.out.println("sd2 a="+sd2.a);
System.out.println("sd=sd2?"+(sd==sd2));
}
}
测试结果:
......in constructor
可以看到构造函数只执行了一次,说明确实只有一个对象被创建了,
sd a=0
sd2 a=1 //本来是sd中a加了1 而sd2 中的a变成了1 说明是同一个实例
sd=sd2?true//这里相等说明是同一个内存区域 所以是同一个实例
注意:使用单例时要注意线程安全的问题