Java實現單例設計模式方法解析
單例模式的幾種實現方式:
一:餓漢式單例
方式一:枚舉方式獲得單例對象
方式二:靜態屬性獲得單例對象
方式三:靜態方法獲得單例對象
二:懶漢式單例
方式一:靜態方法獲得單例對象(線程安全)
方式二:內部類方式去獲取單例對象
示例:
惡漢式:方式一
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;}}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. JSP 中response.setContentType()的作用及參數2. idea開啟代碼提示功能的方法步驟3. ASP.NET MVC使用jQuery的Load方法加載靜態頁面及注意事項4. Docker究竟是什么 為什么這么流行 它的優點和缺陷有哪些?5. ASP.NET MVC實現城市或車型三級聯動6. Springboot集成jsp及部署服務器實現原理7. SpringMVC注解之@ResponseBody注解原理8. IntelliJ IDEA 2020常用配置設置大全(方便干活)9. AJAX POST數據中有特殊符號(轉義字符)導致數據丟失的解決方法10. vue自動添加瀏覽器兼容前后綴操作
