我有一個應用程序,是一個數學遊戲的孩子。由於我在大學的時候,我一直平時只有我所有過去的項目是神的對象,但這個applciation我拆我的代碼爲多個類別:多個類應該如何用於應用程序的不同屏幕?
MathsGame.java
:它初始化的組件和構造主類並控制UI。DiffScreen.java
:包含在難度選擇屏幕上使用的方法。GameScreen.java
:包含在遊戲屏幕上使用的方法。EndGameScreen.java
:包含在遊戲結束屏幕上使用的方法。MigJPanel.java
:延長JPanel
,並設置佈局MigLayout
,並添加了磨砂邊框。
每個屏幕,所述3類XScreen控制僅僅是MigJPanel
實例和屏幕被切換到使用CardPanel
容器JPanel
。
我不知道我怎麼可以把我的代碼,每個類,使他們得到適當的抽象,但我不完全知道如何處理這一點。
如果我的3級屏幕的類從我
MigJPanel
延伸,這些則可以被實例化?所以不是有我
DiffScreen
,GameScreen
,並EndGameScreen
類僅包含與每個屏幕然後將其從MathsGame
調用的方法,每一個屏幕將其自己的類中控制自己。如果是對前一個問題,應該每個屏幕的UI組件是屏幕的類中做?
此刻,在我
MathsGame
構造函數創建爲三個屏幕的所有組件。這使得屏幕與「控制」類(我在此刻使用這個詞非常輕微)之間的聯繫更加分離。因此,每個屏幕只是MigJPanel
的一個實例,其組件在MathsGame
中構建。例如EndGameScreen
類別與End Game屏幕的唯一關係是,當MathsGame
導致顯示結束遊戲屏幕時,在那裏完成的任何操作都會使EndGameScreen
中的方法從MathsGame
中調用。
我希望我解釋得很清楚。如果沒有,留下評論,我會澄清。任何幫助將不勝感激!
1-是的,2-是的。關注自我遏制並保持責任領域。每個UI屏幕都有責任管理它的內容,而不是其他人,實際上,您應該防止允許對這些組件進行不受限制的修改,並且只能通過間接(setter和getters)的託管方法提供訪問,這允許修改屬性,而不是簡單地通過getter提供組件,這可以防止人們刪除不想刪除的組件的問題...... – MadProgrammer
如果需要,您還可以使用接口來維護常用功能,因此如果「 MathsGame'只想處理一定數量的信息/功能,您可以使用其他屏幕使用的界面,這將簡化過程,因爲'MathsGame'只需要瞭解實現界面的類而不是每件事情可能會發生......作爲一個建議... – MadProgrammer
@MadProgrammer這非常有幫助,謝謝!你想把這個答案作爲答案,我可以接受它嗎?另外,我應該在哪裏放置用於在屏幕之間切換的代碼?由於該方法是非靜態的,因此我在每個屏幕類的'ActionListener's上都會出現一個錯誤,因爲該方法是非靜態的,但我無法使其成爲靜態的,因爲它是靜態的爲我在'MathsGame'類中創建的'CardLayout'執行'show()'。我假設我應該有3種方法在類之間切換,但我應該在哪裏放置它們以及我的'CardLayout'? –