0

在項目的上下文中,我必須使用MVC模式將卡片遊戲轉換爲java。目前遊戲在控制檯上運行良好,但我必須添加圖形用戶界面。我很瞭解工作中的控制者和模型,但我在這個觀點上遇到了一些困難。MVC模式:一些難點

你看,我有很多模型類,如「Player」「Card」等等,它們都是從Observable擴展而來的。 因此,我想我應該有很多意見。但是我的應用程序將發生在JFrame對象中,該對象將處於視圖類中。

我的問題是:所有不同的視圖類如何可以訪問另一個視圖類中包含的JFrame對象(用於ex添加按鈕等)? (我猜JFrame會在GameObserver這樣的類中)

+0

爲什麼不是你的JFrame View類?你有什麼看法?如果您沒有多個視圖,很難理解MVC。 – Fuhrmanator

回答

-1

獨立於MVC,如果你只有一個主JFrame並且你永遠不會創建另一個JFrame,那麼它可能是一個很好的解決方案,使它成爲單例並靜態訪問它如SingletonFrame.getInstance()

有許多方法來創建一個Singleton模式,這裏是一個:

public class SingletonFrame extends JFrame { 

    private SingletonFrame() { 
     //your initialization code 
    } 

    private static class SingletonHolder { 
     public static final SingletonFrame instance = new SingletonFrame(); 
    } 

    public static SingletonFrame getInstance() { 
     return SingletonHolder.instance; 
    } 

} 
+0

好的,謝謝!我沒有想過。我也聽說過關於視圖的組合模式(即使我不知道它是如何工作的),它是否也是我的問題的解決方案? – Hunteer

+0

Teh複合模式可以統一處理單個對象和對象組合,從而實現一致的處理,簡化代碼。關於複合視圖,這可以幫助你創建一個包裝模式,例如一個面板中有一些項目,另一個小部件是面板的一部分,還有其他一些項目等等。檢查這個帖子http://stackoverflow.com/questions/13578312/mvc-differences-between-two-step-and-composite-view-patterns –

+0

辛格爾頓是有爭議的。 http://stackoverflow.com/q/137975/1168342 – Fuhrmanator