何時使用static類(工具類)
一個static類,指全部成員都是static方法構成的,而沒有任何成員變數, 也稱為Utility class 或者Utility Pattern [參考: Utility Pattern].它可以在程式中直接使用該類的方法,而不用例項化.static class相對單例有更好的效能,原因是它的方法不需要例項方法的動態繫結 (static方法本身不能被複寫)。
static類可以看作某一組方法的集合,也能夠更好的複用程式碼.static類各個方法應當是無狀態的(stateless),即沒有成員變數儲存中間狀態(結果),每個函式相互獨立.所以很多人批評static類是程式導向開發思想的產物,應當極力避免使用。也有人使用某種方法將static看起來更加符合OOP [參考:OOP Alternative to Utility Classes],不過這種爭論並沒有太大的意義。
static類雖說不會生成例項,但它也會一定的開銷,而且是會影響程式初始化過程的。另外也不能帶靜態成員變數,但如果有一些場景特別需要時,就要注意它對應用效能的影響。可以通過這篇文章瞭解一下:應用程式啟動速度優化。
反觀單例模式,它既符合物件導向的思想,也可以做到延遲初始化.但相對的它有稍大的效能開銷。如果是頻繁使用的物件可能會有些影響。
相關文章
- static關鍵字---"工具類"
- java時間工具類Java
- Java靜態static工具類執行緒安全問題研究Java執行緒
- 周觀察|金融類APP侵害使用者權益何時休APP
- javaSE-day04--ArrayList基本用方法、類內定義方法和方法過載、靜態方法static(類的方法)、工具方法(static)的定義和使用Java
- 不定時更新-工具類小技巧
- 時間相關的工具類
- DateUtils Android時間工具類Android
- 時間處理工具類&工作日處理類
- c#靜態類static class示例C#
- 筆試題 類中static變數筆試變數
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- 工具類
- Java —— 集合工具類(Collections 類)Java
- 何時線性迴歸,聚類或決策樹?聚類
- 在Spring MVC中使用工具類呼叫Service層時,Service類為null如何解決SpringMVCNull
- Java | 靜態巢狀類(Static Nested Class)Java巢狀
- Java常用時間格式轉換工具類Java
- java新特性處理時間工具類Java
- 支付寶即時交易,日期工具類
- java工具類之編碼轉換工具類Java
- Android工具類之手機元件呼叫工具類Android元件
- 併發工具類(五) Phaser類
- Collections工具類
- redis工具類Redis
- FTP工具類FTP
- 加密工具類加密
- Arrays工具類
- jwt工具類JWT
- log工具類
- Java中可以宣告一個類為Static嗎?Java
- static關鍵字有何魔法?竟讓Spring Boot搞出那麼多靜態內部類Spring Boot
- springboot Quartz 定時任務工具類Spring Bootquartz
- Collections工具類,可以使用collections工具類對程式碼中的list進行分組
- Android工具類之檔案操作工具類Android
- Google guava工具類的介紹和使用GoGuava
- [JAVA] 只知物件屬性,不知類屬性?就算類答應,static都不答應Java物件
- 同步工具類—— CountDownLatchCountDownLatch