設計模式:單例
設計模式:23個設計模式
創建型
行爲型
結構型
架構模式:
戰略
單例/單態:如何能保證一個類只出一個對象?
懶漢式:
缺點:訪問速度慢
優點:使用才加載對象
synchronized 同步可以解決懶漢式問題
餓漢式:
優點:訪問速度快
缺點:提前加載
下面說一下懶漢式和餓漢式的區別及優點:
餓漢式不管有沒有調用對象創建方法,都會預先在系統中創建一個靜態對象
懶漢式不會預先創建對象,只有在第一次調用時才創建對象
餓漢式優點: 在多線程模式下是安全的
缺點: 沒有調用方法前就被加載,會佔用內存
懶漢式優點:只有調用方法才創建對象,不會佔用內存
缺點:在多線程模式下不安全
public class Hello {//餓漢式單例
//構造器私有化 不可以在外界創建此類對象
private Hello() {
System.out.println("創建對象");
}
//靜態成員只有一份 加載本類對象 也只有一個
private static Hello hello = new Hello();//靜態只可能有一份
//此方法是返回本類唯一對象
public static Hello getHello() {
return hello;//只要調用此方法就可以創建對象
}
}
public class SayHello {
private SayHello(){
System.out.println("SayHello創建了對象");
}
private static SayHello sayHello;//聲明對象
public static synchronized SayHello getSayHello(){
if(sayHello==null){//判斷調用爲空嗎?
sayHello=new SayHello();//如果不爲空再創建對象
}
return sayHello;//如果不爲空直接返回對象
}
}