讀最近同學發的一篇文章,單例模式最佳實踐: 有感。以前學過單例,沒有實戰經驗,並不知道它在程式優化的方面有很大的作用。最近通過一段時間的學習和開發,對單例模式有了更多的了解。
----------不斷學習才能跟上大神的腳步。
單例模式在高併發情況下還需要考慮很多東西,此篇只做自己參考
應用場景:
1、資料庫連線池的設計一般也是採用單例模式,因為資料庫連線是一種資料庫資源。資料庫軟體系統中使用資料庫連線池,主要是節省開啟或者關閉資料庫連線所引起的效率損耗,這種效率上的損耗還是非常昂貴的,因為何用單例模式來維護,就可以大大降低這種損耗。
2、多執行緒的執行緒池的設計一般也是採用單例模式,這是由於執行緒池要方便對池中的執行緒進行控制。
3、windows的task manager(任務管理器)就是很典型的單例模式(這個很熟悉吧),想想看,是不是呢,你能開啟兩個windows task manager嗎? 不信你自己試試看哦~
4、web應用的配置物件的讀取,一般也應用單例模式,這個是由於配置檔案是共享的資源。
例項:(自己加上私有化的建構函式)
1、利用單例模式連線mongdb
public class mongoutils
private static mongodbdao componentdao = mongoutils.getcomponentmongdbdao();
public static mongodbdao getcomponentmongdbdao()
}
2、初始化redis集群工具類
public class gedisutils
log.info("初始化redis");
try else }}
} catch (exception e)
return gedis;
}}
public enum gediscommandsfactory else
//在此處可以保證單例
gediscommands currentproxy = (gediscommands)singlepools.putifabsent(key, proxy);
if (currentproxy != null)
}return proxy;
}} else
}}
3、zk的連線
public class zkclientholder
public static curatorframework getinstance()
public static void startup()
} private static void initzkclient() else
}});
if (client.getstate() == curatorframeworkstate.latent)
} catch (interruptedexception e)
} else if (client.getstate() == curatorframeworkstate.stopped)
}}
實戰設計模式之單例模式
單例模式的好處能夠幫助我們實現物件只建立乙個例項,並且提供乙個全域性的訪問介面。在android開發中,單例模式能夠很好的幫助我們減少物件的建立,從而提高應用的整體效能。在web程式中,單例模式常常應用在工具類等應用場合,例如jdbc連線工具類 初次接觸單例模式,先看乙個簡單的demo public...
設計模式實戰之單例模式
二 程式設計實戰 三 總結 保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。各種controller類和service類以及標記component類 這個真的太多了 getter publ...
單例模式 實戰應用詳解
單例模式的概念 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這樣做有以下幾個優點 1.對於那些比較耗記憶體的類,只例項化一次可以大大提高效能,尤其是在移動開發中。2.保持程式執行的時候該中始終只有乙個例項存在記憶體中 單例模式的概念 確保某乙個類只有乙個例項,而且自行例項化並向...