我知道一個只包含公共靜態成員函數的類被稱爲Monotype。而某些類,例如Java/C#中的Integer類,實現了各種靜態功能。我也是編寫廚房水槽實用程序類的指南,如InputCleaner.StripHTMLTags()等。只有公共靜態方法與實例化類的類
是否存在Monotypes和公共靜態函數的指導原則?
例如,讓說我有一個骰子類
class Dice
{
public static function RollD100()
{
....
}
}
應該是蒙納,或具有被實例化一個類?
我確實覺得對於必須被實例化類的幾個優點:
- 你需要一個對象,如果你有類中的狀態或數據保持的
- 軌道您可以使用多態,如那裏似乎沒有靜態成員函數多態性(至少在C++中,如果我沒有記錯,想想PHP 5.3可能有)
而對於單一型,你會得到
- 它的功能就像一個全局函數
- 沒有初始化
除了這些必要的步驟,還有什麼其他準則有哪些?
只是澄清一點,這不僅僅是關於擴展方法,而更多的是「什麼時候使用公共靜態方法/成員函數?」 – Extrakun 2009-08-11 06:46:37