单例设计模式:解决一个类在内存只有一个对象
1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
2.还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象;3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
1.将构造函数私有化;
2.在类中创建一个本类对象;
3.提供一个方法可以获取该对象。
饿汉式
特点:先初始化对象
Single类一进内存,就创建好了对象
class Single{
private Single(){};
private static Single single = new Single(); //single在静态方法中被调用,所以Single类创建的对象single要加静态修饰符static
public static Single getInstance(){ //因为进行了类名调用,所以方法加静态修饰符static
return single;
}
}
//测试类
public class Demo{
public static void main(String[] args) {
Single s1 = Single.getInstance(); //对象不能创建,只能利用类名调用
Single s2 = Single.getInstance(); //s,s1,s2三个引用都指向同一个对象
}
}
懒汉式
Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
class Single{
private Single(){};
private static Single single = null;
public static Single getInstance(){
if(single == null){
single = new Single();
}
return single;
}
}
public class Demo{
public static void main(String[] args) {
Single s1 = Single.getInstance();
Single s2 = Single.getInstance(); //s,s1,s2三个引用都指向同一个对象
}
}