Java實現(xiàn)單例設(shè)計模式方法解析
單例模式的幾種實現(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門精解之結(jié)構(gòu)與語法2. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera3. CSS3實例分享之多重背景的實現(xiàn)(Multiple backgrounds)4. 利用CSS3新特性創(chuàng)建透明邊框三角5. XML入門的常見問題(一)6. HTML5 Canvas繪制圖形從入門到精通7. 概述IE和SQL2k開發(fā)一個XML聊天程序8. HTML <!DOCTYPE> 標(biāo)簽9. HTML DOM setInterval和clearInterval方法案例詳解10. XML入門的常見問題(二)
