1 回答

TA貢獻1842條經(jīng)驗 獲得超21個贊
Java實現(xiàn)單例的5種方式
1. 什么是單例模式
單例模式指的是在應(yīng)用整個生命周期內(nèi)只能存在一個實例。單例模式是一種被廣泛使用的設(shè)計模式。他有很多好處,能夠避免實例對象的重復(fù)創(chuàng)建,減少創(chuàng)建實例的系統(tǒng)開銷,節(jié)省內(nèi)存。
2. 單例模式和靜態(tài)類的區(qū)別
首先理解一下什么是靜態(tài)類,靜態(tài)類就是一個類里面都是靜態(tài)方法和靜態(tài)field,構(gòu)造器被private修飾,因此不能被實例化。Math類就是一個靜態(tài)類。
知道了什么是靜態(tài)類后,來說一下他們兩者之間的區(qū)別:
1)首先單例模式會提供給你一個全局唯一的對象,靜態(tài)類只是提供給你很多靜態(tài)方法,這些方法不用創(chuàng)建對象,通過類就可以直接調(diào)用;
2)單例模式的靈活性更高,方法可以被override,因為靜態(tài)類都是靜態(tài)方法,所以不能被override;
3)如果是一個非常重的對象,單例模式可以懶加載,靜態(tài)類就無法做到;
那么時候時候應(yīng)該用靜態(tài)類,什么時候應(yīng)該用單例模式呢?首先如果你只是想使用一些工具方法,那么最好用靜態(tài)類,靜態(tài)類比單例類更快,因為靜態(tài)的綁定是在編譯期進行的。如果你要維護狀態(tài)信息,或者訪問資源時,應(yīng)該選用單例模式。還可以這樣說,當(dāng)你需要面向?qū)ο蟮哪芰r(比如繼承、多態(tài))時,選用單例類,當(dāng)你僅僅是提供一些方法時選用靜態(tài)類。
添加回答
舉報