單例模式--概念
單例模式常見(jiàn)的寫(xiě)法有:懶漢式,餓漢式,登記式。
單例模式的特點(diǎn)有:
1.單例類(lèi)只能有1個(gè)實(shí)例
2.單例類(lèi)必須自己創(chuàng)建自己的唯一實(shí)例
3.單例類(lèi)必須給其他對(duì)象提供這個(gè)實(shí)例
選擇單例模式可以避免不一致的狀態(tài)。
懶漢式單例
//懶漢式單例類(lèi).在第一次調(diào)用的時(shí)候?qū)嵗约?
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//靜態(tài)工廠方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
在第一次調(diào)用的時(shí)候?qū)嵗约?,?gòu)造函數(shù)是私有的,防止被其他類(lèi)實(shí)例化。它是線(xiàn)程不安全的。
餓漢式單例
public class Singleton1 {
private Singleton1() {}
private static final Singleton1 single = new Singleton1();
//靜態(tài)工廠方法
public static Singleton1 getInstance() {
return single;
}
}
餓漢式在類(lèi)被創(chuàng)建好后就完成自身實(shí)例化,是線(xiàn)程安全的。