單例模式(Singleton)Holder

2022-07-17 18:30:25 字數 1974 閱讀 1296

簡單,又不簡單,看看便知道。建議採用demo-4。

demo-1 懶漢式(synchronized)

public

class singleton

/**
* 定義乙個方法來為客戶端提供類例項
* @return 乙個singleton的例項
*/
public

static

synchronized singleton getinstance()

//如果有值,那就直接使用
return uniqueinstance;
}
/**
* 示意方法,單例可以有自己的操作
*/
public

void singletonoperation()

/**
* 示意屬性,單例可以有自己的屬性
*/
private string singletondata;
/**
* 示意方法,讓外部通過這些方法來訪問屬性的值
* @return 屬性的值
*/
public string getsingletondata()
}

demo-2 懶漢式 (雙重檢查加鎖)

class singleton

public

static singleton getinstance()

}
}
return instance;
}
}

demo-3 餓流式

class singleton

//2:定義乙個方法來為客戶端提供類例項
//3:這個方法需要定義成類方法,也就是要加static
//這個方法裡面就不需要控制**了
public

static singleton getinstance()

}

demo-4 內部類

class singleton

/**
* 私有化構造方法
*/
private singleton()
public

static singleton getinstance()

}

備註:1. 全域性共享,獨乙份;

2. 建構函式不暴露(如果暴露便不能保證乙份),自己負責自己的構造;

3. 懶漢式:lazy load,用到才載入,非執行緒安全。如何保證執行緒安全呢:

(1) synchronized getinstance()。見demo-1

(2)雙重檢查加鎖。見demo-2。

4. 餓漢式:一開始就申請好,浪費了點資源,但其執行緒安全。 見demo-3。

5. 內部類:

(1)改成內部類,由jvm保證執行緒安全性。見demo-4。

參考:

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...

單例模式 懶漢式單例模式

單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...