Java MVC模式:一些难点

Java MVC模式:一些难点,java,swing,design-patterns,model-view-controller,controller,Java,Swing,Design Patterns,Model View Controller,Controller,在项目上下文中,我必须使用MVC模式将纸牌游戏实现到java中。目前游戏在控制台上运行良好,但我必须添加一个图形用户界面。我很了解控制器和模型是如何工作的,但我对视图有一些困难 你看,我有很多模型类,比如“玩家”“卡片”等等。。从可观察延伸而来。 因此,我想我应该有很多看法。但是我的应用程序将发生在JFrame对象中,该对象将位于视图类中 我的问题是:所有不同的视图类如何访问包含在另一个视图类中的JFrame对象(例如添加按钮等等)?(我想JFrame应该属于GameObserver之类的类)独

在项目上下文中,我必须使用MVC模式将纸牌游戏实现到java中。目前游戏在控制台上运行良好,但我必须添加一个图形用户界面。我很了解控制器和模型是如何工作的,但我对视图有一些困难

你看,我有很多模型类,比如“玩家”“卡片”等等。。从可观察延伸而来。 因此,我想我应该有很多看法。但是我的应用程序将发生在JFrame对象中,该对象将位于视图类中


我的问题是:所有不同的视图类如何访问包含在另一个视图类中的JFrame对象(例如添加按钮等等)?(我想JFrame应该属于GameObserver之类的类)

独立于MVC,如果您只有一个主JFrame,并且从未创建过另一个主JFrame,那么将其设置为单例并静态访问它可能是一个很好的解决方案,例如
SingletonFrame.getInstance()

创建单例模式的方法有很多,下面是一种:

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;
    }

}

好的,谢谢!我没想过。我也听说过视图的复合模式(即使我不知道它是如何工作的),它也是我问题的解决方案吗?复合模式可以统一处理单个对象和对象的组成,实现一致的处理,简化代码。关于复合视图,这将帮助您创建一个包装模式,例如一个面板中有一些项目,另一个小部件是面板的一部分,其中有一些其他项目等等。查看这篇文章为什么你的JFrame不是View类?你的看法是什么?如果没有多个视图,就很难理解MVC。