單例模式實戰

2021-09-23 15:31:38 字數 1619 閱讀 5269

讀最近同學發的一篇文章,單例模式最佳實踐: 有感。以前學過單例,沒有實戰經驗,並不知道它在程式優化的方面有很大的作用。最近通過一段時間的學習和開發,對單例模式有了更多的了解。

----------不斷學習才能跟上大神的腳步。

單例模式在高併發情況下還需要考慮很多東西,此篇只做自己參考

應用場景:

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.保持程式執行的時候該中始終只有乙個例項存在記憶體中 單例模式的概念 確保某乙個類只有乙個例項,而且自行例項化並向...