2016-03-08 46 views
0

我有一個簡單的Java應用程序,它在一個類的main method中執行其所有邏輯。使用所有靜態方法而不是其他「服務」類的缺點?

當前我剛剛在這個類中創建了方法,將它們聲明爲Static並在主要中調用它們。

該方法優於例如創建一個"service"類,然後創建它的一個實例來調用我的方法?

+0

一個缺點:如果一個實例的方法改變的東西,它改變了向它提出的所有來電,因爲它是靜態的 – Stultuske

+0

可以請你詳細說明一下嗎? – java123999

+0

你的意思是向你解釋靜態是什麼?這是非常基本的。只需查找java靜態vs實例 – Stultuske

回答

1

如果你的方法是功能性的(沒有副作用),那麼可以使用靜態方法。如果他們有副作用(例如更改靜態類成員),則此設計是危險的,因爲系統的其他部分可能突然中斷。

一個更普遍的問題是,它很難單元測試這種靜態方法,因爲它們不容易被嘲笑。在這種情況下,最好使用實現接口的stingleton。這單然後通過一個「虛擬」 - 實施

也看到所以這個問題被嘲笑:Why aren't static methods considered good OO practice?

相關問題