Java實現(xiàn)單例設計模式方法解析
單例模式的幾種實現(xiàn)方式:
一:餓漢式單例
方式一:枚舉方式獲得單例對象
方式二:靜態(tài)屬性獲得單例對象
方式三:靜態(tài)方法獲得單例對象
二:懶漢式單例
方式一:靜態(tài)方法獲得單例對象(線程安全)
方式二:內(nèi)部類方式去獲取單例對象
示例:
惡漢式:方式一
enum Singleton{INSTANCE;//單例}
惡漢式:方式二
class Singleton{public static final Singleton INSTANCE = new Singleton();//單例private Singleton(){}}
惡漢式:方式三
class Singleton{private static final Singleton INSTANCE = new Singleton();//單例private Singleton(){}public static Singleton getInstance(){return INSTANCE;}}
懶漢式:方式一
class Singleton{private static Singleton instance;private Singleton(){}public static Singleton getInstance(){//存在線程安全問題(多線程的時候,不一定是單例)/*if(null == instance){instance = new Singleton();}return instance;*/if(null == instance){//提升代碼效率,避免每一次都去走同步代碼塊synchronized(Singleton.class){if(null == instance){instance = new Singleton();}return instance;} }return instance; }}}
懶漢式:方式二
class Singleton{private Singleton(){}private static class Inner{public static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance(){return Inner.INSTANCE;}}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關文章:
1. ajax請求添加自定義header參數(shù)代碼2. ASP基礎知識VBScript基本元素講解3. 解決android studio引用遠程倉庫下載慢(JCenter下載慢)4. Kotlin + Flow 實現(xiàn)Android 應用初始化任務啟動庫5. Python requests庫參數(shù)提交的注意事項總結6. Gitlab CI-CD自動化部署SpringBoot項目的方法步驟7. 利用CSS3新特性創(chuàng)建透明邊框三角8. 淺談SpringMVC jsp前臺獲取參數(shù)的方式 EL表達式9. axios和ajax的區(qū)別點總結10. python操作mysql、excel、pdf的示例
