2015-08-27 77 views
2

也許這個問題是一般的,但我沒有找到我正在尋找的答案,所以我希望從這篇文章中得到一些想法。我正試圖將一些常用的方法移出給幫手來簡化我的設計。我查看了多篇文章,並就實用方法靜態v/s非靜態進行了討論。我的問題更多地涉及創建一個輔助類與靜態和非靜態方法的組合。由於現有類包含靜態和非靜態方法的組合,因爲我不想在多個類中重複代碼,所以我想移出這些方法。所以,我想知道在助手類中包含靜態方法和非靜態方法是否是個好主意。我有點猶豫的原因是大多數效用方法在本質上是靜態的,我想了解它是否是在實用類中具有靜態和非靜態方法的良好設計選擇。有什麼建議麼??設計助手/工具類 - java

回答

2

這取決於班級在做什麼。

非靜態方法意味着幫助程序類維護一些可能在不同實例中不同的狀態。如果你沒有這些,那麼所有的靜態方法就是要走的路(像Java數學或集合類那樣思考)。

如果您需要跨方法調用維護實例狀態,那麼非靜態方法很有用。如果你朝這個方向前進,那麼你的助手類將有構造函數或者靜態工廠方法來創建Helper對象,並且每個實例都會有維護狀態的字段。

非靜態方法也可能是一個好主意,如果你的其他靜態方法通常具有相同的參數一遍又一遍都是相同的值/引用。在這種情況下,構建這些構造函數的參數可能會更清晰,並且只需爲方法之間不同的附加參數提供方法參數。