2013-06-18 36 views
3

我正在做一個GUI類來處理簡單的任務,比如彈出一個窗口,用幾個面板和其他組件填充它,沒有什麼複雜的。讓GUI靜態或不是

我想最好的做法是什麼:

  • 使靜態調用一切都在GUI類

  • 實例化我的GUI類的一個對象,並調用該對象的方法。 「通常」的方式。

請注意,我是Java新手。如果我誤解了某些東西,我很樂意學習。

謝謝!

+1

嘗試並理解靜態,然後根據您的要求進行設計http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html –

+0

您應該避免使用靜態窗口並使用類實例,事件,方法等。如果你問我最好的做法 – Filip

回答

1

我會用第二種方法,即實例化我的GUI類的對象,因爲靜態方法在TDD方法方面不太好。當我說不好意味着,靜態方法很難嘲弄一些時間。

理想情況下,每當方法處理對象狀態時,都應該使用實例方法。在不依賴於對象狀態的情況下,應該在實用方法的情況下選擇靜態方法。

但是,當你在圖片中引入TDD並且存在級聯的靜態方法時,有時在單元和其他各種不支持嘲諷靜態方法的框架中編寫junit會很困難,但人們通常更喜歡實例方法,即使它們有朝向靜態方法的同樣充足的理由。

除了它具有一流水平的方法,你失去像多態性

0

我強烈建議你按照「通常」的方式來做。雖然在可能的情況下使用靜態方法(!)通常是一種很好的方法(在util類中進行外部化,更好的測試可能性,更容易重用),但我不會爲您的GUI推薦它。如果你想讓你的GUI變成靜態的,它就像一個單例一樣,這樣你就有機會創建多個例子。你的窗戶,框架等。

0

您應該根據需要實例化GUI對象,並使用事件來交換消息或操作。是否靜態 - 取決於你。

1

我會建議在某處使用一個像「getInstance」這樣的靜態方法,並在其他地方使用正常的OOP。如果你發現你需要繼承,多態性或OOP的其他常用特性,那麼讓GUI中的所有內容都靜態化可能會導致問題。

+0

OOP是什麼意思? – Goatcat

+0

@Goatcat OOP:面向對象編程 – pinkpanther

0

我總是使用一個線程安全的單委託從GUI的一部分事件的GUI的另一部分哎呀模型的其他能力。

0

這真的取決於。對於非常小的項目,可以在主類文件中創建所有內容並使每個組件都是靜態的。但是,隨着項目越來越大,您肯定會想要添加其他類。

我目前正在研究一個項目,當我將所有GUI部件集成到主類中並使用其他類來處理數據之間的關係時,該項目的表現會更好。無論如何:GUI應該獨立於數據,並且最好通過使用類來處理複雜的數據。