什么是單例模式?
單例模式就是只能被實例化一次呵曹!
package charactor;
public class GiantDragon {
? ? //私有化構造方法使得該類無法在外部通過new 進行實例化
private GiantDragon(){
}
//準備一個類屬性白翻,指向一個實例化對象阐滩。 因為是類屬性,所以只有一個
private static GiantDragon instance = new GiantDragon();
//public static 方法拒课,提供給調(diào)用者獲取12行定義的對象
public static GiantDragon getInstance(){
return instance;
}
}
類和對象系列教材 (十二)- 怎么寫一個Java的餓漢式與懶漢式單例模式
1. 構造方法私有化
2. 靜態(tài)屬性指向?qū)嵗?/p>
3. public static的 getInstance方法狼牺,返回第二步的靜態(tài)屬性
餓漢式和懶漢式羡儿?
餓漢式是立即加載的方式,無論是否會用到這個對象锁右,都會加載失受。
如果在構造方法里寫了性能消耗較大讶泰,占時較久的代碼咏瑟,比如建立與數(shù)據(jù)庫的連接拂到,那么就會在啟動的時候感覺稍微有些卡頓。
懶漢式码泞,是延遲加載的方式兄旬,只有使用的時候才會加載。 并且有線程安全的考量(鑒于同學們學習的進度余寥,暫時不對線程的章節(jié)做展開)领铐。
使用懶漢式,在啟動的時候宋舷,會感覺到比餓漢式略快绪撵,因為并沒有做對象的實例化。 但是在第一次調(diào)用的時候祝蝠,會進行實例化操作音诈,感覺上就略慢。
看業(yè)務需求绎狭,如果業(yè)務上允許有比較充分的啟動和初始化時間细溅,就使用餓漢式,否則就使用懶漢式