单例模式
单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。
懒汉式
饿汉式
1、懒汉式:在使用时创建对象
public class TestSingle1 {
//1、私有静态变量
private static TestSingle1 t = null;
//2.私有化构造器
private TestSingle1(){} //私有化构造器,在类外部时不可以直接new
//3.提供一个公有方法,返回这个对象
public synchronized static TestSingle1 newInstance(){ //注意多线程情况
if(t==null)
t = new TestSingle1(); //这里才创建好
return t;
}
//测试类
public static void main(String[] args) {
TestSingle1 t1 = newInstance();
TestSingle1 t2 = newInstance();
System.out.println(t1);
System.out.println(t2);
}
}
结果显示:
两个对象的地址一样,说明两个对象是同一个
2、饿汉式:当加载类时就创键好
public class TestSingle2 {
//1、私有静态变量
private static TestSingle2 t = null;
//2.私有化构造器
private TestSingle2(){}
static {
t = new TestSingle2(); //当类被加载时就new
}
//3.提供一个公有方法,返回这个对象
public static TestSingle2 getInstance(){
return t;
}
public static void main(String[] args) {
TestSingle2 t1 = getInstance();
TestSingle2 t2 = getInstance();
System.out.println(t1);
System.out.println(t2);
}
}
输出结果和上面一致。
总结
所谓懒汉模式,就是程序比较懒,只有需要他的时候,才会创建对象,如果有了,就不在创建,这个类的构造函数一定是私有的。所以在创建对象时,需要进行检查,所以这时候很慢,一旦对象完成创建,加载类时,速度很快。至于饿汉模式,就是这个类时刻准备着,一旦加载这个类,立马创建对象,所有类很多的时候,加载显的程序运行缓慢,这个类的构造函数也是私有的。