設計模式GOF23之單例模式

2021-10-06 04:10:23 字數 1025 閱讀 4123

單例模式的五種方式

主要:懶漢式,餓漢式

其他:雙重檢測鎖(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中的工具箱,任何時候只能有乙個工具箱。大話設計模...