單例模式與靜態類

什麼是單例模式
單例模式指的是在應用***整個生命週期內只能存在一個實例。***單例模式是一種被廣泛使用的設計模式。他有很多好處,能夠避免實例對象的重複創建,減少創建實例的系統開銷,節省內存。

什麼是靜態類
(常見的工具類都是):所有的成員都是靜態的。可以認爲是靜態的集合。
例如:
Math類是一個靜態類。
我們使用Math.round()方法時,並不關注Math類本身,關注的其實是round方法的方法體中的代碼執行邏輯。構造器被private修飾,因此不能被實例化。使用工具類,其實是使用了工具類中方法的方法體。與類對象無關。

單例模式和靜態類的區別

知道了什麼是靜態類後,來說一下他們兩者之間的區別:

1)首先單例模式會提供給你一個全局唯一的對象,靜態類只是提供給你很多靜態方法,這些方法不用創建對象,通過類就可以直接調用;

2)單例模式的靈活性更高,方法可以被override,因爲靜態類都是靜態方法,所以不能被override;

3)如果是一個非常重的對象,單例模式可以懶加載,靜態類就無法做到;

那麼時候時候應該用靜態類,什麼時候應該用單例模式呢?首先如果你只是想使用一些工具方法,那麼最好用靜態類,靜態類比單例類更快,因爲靜態的綁定是在編譯期進行的。***如果你要維護狀態信息,或者訪問資源時,應該選用單例模式。***還可以這樣說,當你需要面向對象的能力時(比如繼承、多態)時,選用單例類,當你僅僅是提供一些方法時選用靜態類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章