單例
乙個類只有乙個例項
實現單例的三個步驟:
1.私有化構造器
2.在本類中建立唯一例項(靜態的變數)
3.提供乙個公有的靜態的get方法用於返回當前類的唯一例項
餓漢當類一載入的時候就建立物件
優點: 呼叫效率高, 執行緒安全的
缺點: 如果這個類建立了一直沒有使用, 則相當於浪費了資源
/**
* 餓漢單例
缺點:類初始化就new乙個物件,如果不用會占用資源
優點:執行緒安全,效率高()
*/public class hungrysingle;
public static hungrysingle getinstance()
}
懶漢當類載入的時候不會建立物件, 只有當這個物件被顯示獲取時,
才去建立物件
優點: 實現了懶載入
缺點: 呼叫效率較餓漢低, 執行緒不安全
/**
* lazy單例
優點:不需要再初始化時就new乙個物件,節約系統資源
缺點:每次使用都要new,如果引數很多,需要花費時間,效率低,而且執行緒不安全
*/public class lazysingle
private static lazysingle instance;
public static lazysingle getinstance()else
}}
靜態內部類
在類的內部定義乙個私有的內部類, 在內部類中去建立唯一例項
即實現了懶載入, 又保證了執行緒安全
推薦使用
public class outsingle;
private static class innersingle
public static final outsingle getinstance()
}
設計模式之單例設計模式 一)
目錄 1.懶漢式 2.餓漢式 例子 對於系統中的某些類來說,只有乙個例項很重要,例如,乙個系統中可以存在多個列印任務,但是只能有乙個正在工作的任務 乙個系統只能有乙個視窗管理器或檔案系統 乙個系統只能有乙個計時工具或id 序號 生成器。如在windows中就只能開啟乙個任務管理器。如果不使用機制對視...
設計模式一之單例模式
單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...
設計模式一之單例模式
第一種單例模式 餓漢式 建構函式私有化 提供公共的靜態函式 建立物件 public class singleton public static singleton getinstance 第二種單例模式 懶漢式 跟第一種單例模式相比 懶漢式是在需要使用物件的時候才建立物件 建立的時候使用雙重檢查 兼...