2010-10-18 28 views
8

我正在開發一個基於swing的應用程序,我正在使用許多FileDialogs?所以我說爲什麼不製作一個FileDialog對象而不是所有這些實例並在整個項目中使用它?這是一個好的假設嗎?這是否有任何性能改進?我應該將文件對話框實現爲單例嗎?

感謝

回答

8

這是一個很好的例子,其中應用程序性能並不重要,而且問題實際上屬於過早優化的問題解決類。爲什麼?使用FileDialog意味着你正在與用戶進行交互,即使熟練使用快捷鍵Kung Fu的技術熟練,也會比應用程序慢許多個數量級。快速用戶可以在一分鐘內打開,使用和關閉多少個FileDialog?說一打。你不需要關心一分鐘內來回打的十幾個物體。甚至不應該出現在你的雷達上。在別處使用你的能量。事實上,你應該每次創建一個新對象,並避免任何緩存頭痛。

+0

+1非常好的說,與過早優化的強點。 – chiccodoro 2010-10-18 14:41:34

3

我會作出這樣產生的FileDialog的新實例每一個新的開放的需要,而不是整個應用程序共享Singleton實例時靜態的FileDialog類。

這可以節省您試圖弄清楚您是否正在從對話框中讀取正確路徑或者是否有人打開對話框並選擇了新路徑而現在您正在引用新路徑比原來選擇的路徑等...

1

爲什麼實施是作爲一個Singleton?你真的可以驗證顯示兩個文件對話框永遠不會發生嗎?

更好地把它作爲一個普通班;你不想構建限制,以後可能成爲痛點。

它不喜歡你的應用程序將是由數以百萬計的調用文件對話框來批判過載,誰知道,也許有一天它會是正確的解決方案有兩個文件對話框。即使你不同時顯示它們,也許在「源」對話框中保存歷史記錄並在「目標」對話框中有單獨的歷史記錄將是文件傳輸程序中的一個祝福。

0

忘記性能/速度。這裏沒關係。語義很重要。重複使用相同的文件對話框可能會免費提供給您。每次都會在同一個目錄中啓動對話框?它會如果它是相同的實例。如果你正在創建新的對話框,你將不得不設置啓動目錄你自己。

又爲什麼不能創建多個實例?只需在你的框架中創建一個實例成員並完成它。

相關問題