關於java單例設計模式
什麼是單例設計模式,顧名思義:單例設計模式就是確保一個類裏只有一個實例的設計模式,這也是這個設計模式的優勢,這個類裏只會有一個實例。java
它的步驟:
1>咱們開發一個類,構造方法私有化,保證不能在程序中隨意new對象
2>在類裏定義一個靜態變量,實例化一個該類的實例(外界在調方法時,只能獲得一個實例,是一個單例的類)設計模式
兩種形式:安全
1.餓漢式單例類
public class Cat{
//static屬性保證了只持有一個Cat實例,每次調用靜態方法,都返回同一個Cat實例的引用
private static Cat cat = new Cat();
//私有化構造方法
private Cat(){
} //提供靜態的返回Cat實例的方法
public static Cat getInstance(){
return cat;
}
}多線程
2.懶漢式單例(何時調用靜態方法獲取實例,何時在建立對象)線程
public class Cat{
// static屬性:只存一份
private static Cat cat;
// 私有化構造方法
private Cat() {
}
//提供靜態的返回Cat實例的方法
public static Cat getInstance() {
if (cat == null) {
synchronized (Cat.class) {
if (cat == null) {
cat = new Cat();
}
}
}
return cat;
}
}設計
注:懶漢式單例在多線程環境下不安全,要加同步鎖synchronized,而後在同步代碼塊中加一層判斷,雙重斷定鎖j就能夠啦。對象