public class Demo1 {
public static void main(String[] args) {
/*System.out.println(Demo2.getInstance());
System.out.println(Demo2.getInstance());*/
System.out.println(Demo3.getInstance());
System.out.println(Demo3.getInstance());
}
}
//餓漢式
class Demo2{
private static Demo2 demo2=new Demo2();
public static Demo2 getInstance(){
return demo2;
}
private Demo2(){
System.out.println(“dididi”);
}
}
//懶漢式
class Demo3{
private static Demo3 demo3;
public static Demo3 getInstance(){
if(demo3==null){
demo3=new Demo3();
}
return demo3;
}
private Demo3(){
System.out.println(“dididi”);
}
}
一個類只能調用一次單例模式,通過構造方法打印次數來判斷調次數,
不能通過打印類的16進制判斷。
小提示: 懶漢式會出現線程安全問題,我們一般在方法上加上鎖(synchronized)來保證線程安全。