/*
单列设计模式:就让一个类永远只产生一个对象
恶汉式:没有线程安全问题,开发中直接使用
1.私有化构造函数
2.创建声明一个私有的静态的最终的本类对象
3.提供一个公共的返回值为本类对象的一个方法
懒汉式:
1.私有化构造函数
2.声明一个私有的静态本类对象
3.提供一个公共的返回值为本类对象的一个方法
在返回本类对象变量的时候要先判断这个变量是否等于null,如果等于null就创建本类的对象,如果不等于null就直接返回
单列设计模式:就让一个类永远只产生一个对象
恶汉式:没有线程安全问题,开发中直接使用
1.私有化构造函数
2.创建声明一个私有的静态的最终的本类对象
3.提供一个公共的返回值为本类对象的一个方法
懒汉式:
1.私有化构造函数
2.声明一个私有的静态本类对象
3.提供一个公共的返回值为本类对象的一个方法
在返回本类对象变量的时候要先判断这个变量是否等于null,如果等于null就创建本类的对象,如果不等于null就直接返回
*/
用代码解释下为什么要这么做
class Test{
public static void main(String[] args){
System.out.println("3");
Father1 fa1=Father1.getFather1();
System.out.println("4");
Father fa=Father.getFather();
System.out.println("5");
Father1 faa=new Father1(1);
}
}
class Father{
private Father(){//构造私有保证不能在别的类里初始化
System.out.println("2");
}
private static final Father fa=new Father();//final保证只实例化一个
public static Father getFather(){//加逻辑,static保证别的类能通过类.方法的得到它
return fa;
}
}
class Father1{
private Father1(){
System.out.println("1");
}
public Father1(int a){}//不私有化的后果
private static Father1 fa;//
public static Father1 getFather1(){//是通过加逻辑保证只实例化一个
if(fa==null)
fa=new Father1();
return fa;
}
}
//懒汉式可能出现a创建引用后挂起,b因此可以判断为真而实例化,a继续后也实例化,由于不是终态而引起冲突;但设为终态需要在创建对象成功前初始化,在这里不能设为终态