單例模式(23種設計模式)

2021-09-24 14:27:28 字數 740 閱讀 2964

單例模式**

/*

餓漢模式

*/ class singletondemo

public static singletondemo gets()}/*

懶漢模式

*/class singletondemo1

public static singletondemo1 gets()

return instance;

}}/**

* 單例模式,懶漢式,執行緒安全,多執行緒環境下效率不高

* synchronized 關鍵字,代表這個方法加鎖,相當於不管哪乙個執行緒(例如執行緒a),

* 執行到這個方法時,都要檢查有沒有其它執行緒b(或者c、 d等)正在用這個方法(或者該類的其他同步方法),

* 有的話要等正在使用synchronized方法的執行緒b(或者c 、d)執行完這個方法後再執行此執行緒a,

* 沒有的話,鎖定呼叫者,然後直接執行。

*/class singletondemo2

public static synchronized singletondemo2 gets()

return sd;

}}/*

雙重加鎖 懶漢模式

*/class singletondemo3

public static singletondemo3 getsd3()}}

return sd3;

}}

23種設計模式 單例模式

某些情況,如 執行緒池,乙個專案中匯流排程數量以及生命週期,可能需要統一控制 如果執行緒池自身可建立多個例項,那麼就無法統一控制,此時,只要能控制線程池物件的數量為乙個,那麼就可以實現統一控制的目標 注意 現實中真正使用純的單例模式並不多 如 spring bean 通過配置來決定是否使用單例 執行...

23種設計模式 單例模式

單例模式需要保證,構造方法一定是私有化的,並且類的全域性變數必須是靜態的,私有的 這樣才能有唯一的例項化途徑 錯誤 一 public class singleton public static singleton getinstance 上述方法,並沒有把類變數singleton設定為靜態的,這樣,...

23種設計模式 單例模式

單例模式 保證乙個類只有乙個例項,並且提供乙個該例項的全域性訪問點 單例模式的要素 public class singleton1 2 類初始化的時候,立即載入該物件 private static singleton1 singleton1 newsingleton1 3 提供獲取該物件的公共方法 ...