單例模式的五種方式
主要:懶漢式,餓漢式
其他:雙重檢測鎖(double checking模式),靜態內部類,列舉模式
選取時機
延時載入,占用內部資源大:靜態內部類好於懶漢
不延時載入,占用內部資源小:列舉好於餓漢
/*** 單例模式 懶漢式
* @author 小帆敲****/
public class demo01
//上鎖,併發效率低
public static synchronized demo01 getinstance()
return instance;}}
/*** 單例模式 餓漢式
* @author 小帆敲****/
public class demo02
//不上鎖,併發效率高
public static demo02 getinstance()
}/**
* 雙重檢測 double checking
* 問題 指令重排和jvm內部模型不支援可能會帶來問題
* 解決方法:volatile取消指令重排
* @author 小帆敲****/
public class demo03
public static demo03 getinstance()
}return instance;}}
/*** 靜態內部類實現單例模式
* 執行緒安全,效率高,延遲載入
* @author 小帆敲****/
public class demo04
private demo04()
public static demo04 getinstance()
}/**
* 列舉模式實現單例
* 保證只有乙個,執行緒安全,天然的防止反射和反序列化的漏洞
* 不能延時載入
* @author 小帆敲****/
public enum demo05
}
設計模式GOF23之單例模式
單例模式的五種方式 主要 懶漢式,餓漢式 其他 雙重檢測鎖 double checking模式 靜態內部類,列舉模式 選取時機 延時載入,占用內部資源大 靜態內部類好於懶漢 不延時載入,占用內部資源小 列舉好於餓漢 單例模式 懶漢式 author 小帆敲 public class demo01 上鎖...
GOF23設計模式(單例模式)
保證乙個類只有乙個例項,並且提供乙個訪問該例項的全域性訪問點。單例模式的優點 1.由於單例模式只生成乙個例項,減少了系統效能開銷,當乙個物件的產生需要比較多的資源時,如讀取配置 產生其他依賴物件時,則可以通過在應用啟動時直接產生乙個單例物件,然後永久駐留記憶體的方式來解決 2.單例模式可以在系統設定...
GOF23之單例模式
單例模式是gof23中最簡單的模式。單例的設計模式裡的出場率很高,它簡單但也有多種實現方式,也正是因為它的靈活性和重要性使喚其多次出現在面試筆試中,經常與工廠模式搭配使用。作用 保證乙個類只能有乙個例項。多次建立只會返回同乙個例項。作用範圍 如word中的工具箱,任何時候只能有乙個工具箱。大話設計模...