何時使用static類(工具類)

Horky發表於2016-02-06
一個static類,指全部成員都是static方法構成的,而沒有任何成員變數, 也稱為Utility class 或者Utility Pattern [參考: Utility Pattern].它可以在程式中直接使用該類的方法,而不用例項化.static class相對單例有更好的效能,原因是它的方法不需要例項方法的動態繫結 (static方法本身不能被複寫)。 

static類可以看作某一組方法的集合,也能夠更好的複用程式碼.static類各個方法應當是無狀態的(stateless),即沒有成員變數儲存中間狀態(結果),每個函式相互獨立.所以很多人批評static類是程式導向開發思想的產物,應當極力避免使用。也有人使用某種方法將static看起來更加符合OOP [參考:OOP Alternative to Utility Classes],不過這種爭論並沒有太大的意義。

static類雖說不會生成例項,但它也會一定的開銷,而且是會影響程式初始化過程的。另外也不能帶靜態成員變數,但如果有一些場景特別需要時,就要注意它對應用效能的影響。可以通過這篇文章瞭解一下:應用程式啟動速度優化

反觀單例模式,它既符合物件導向的思想,也可以做到延遲初始化.但相對的它有稍大的效能開銷。如果是頻繁使用的物件可能會有些影響。

相關文章