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