0

В контексте проекта я должен реализовать карточную игру в java, используя шаблон MVC. В настоящее время игра хорошо работает на консоли, но я должен добавить графический интерфейс. Я хорошо понимаю, как работают контроллеры и модели, но у меня возникают некоторые трудности с этим представлением.MVC pattern: некоторые трудности

Вы видите, у меня есть много классов моделей, таких как «Игрок» «Карта» и т. Д., Которые простираются от Observable. Так что, как я полагаю, у меня должно быть много просмотров. Но мое приложение будет иметь место в объекте JFrame, который будет отображаться в классе Class.

Мой вопрос: как все классы вида могут иметь доступ к объекту JFrame (например, добавить кнопку и т. Д.), Который содержится в другом классе представления? (JFrame будет в классе, например GameObserver)

+0

Почему не ваш JFrame мнение, класс? Каковы ваши взгляды? Трудно понять MVC, если у вас нет более одного представления. – Fuhrmanator

ответ

-1

Независимо от MVC, если у вас есть только один основной JFrame, и вы никогда не создадите другого, тогда это может быть хорошим решением, чтобы сделать его Singleton и получить его статически , например 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

Композитный шаблон позволяет единообразно обрабатывать отдельные объекты и композиции объектов, обеспечивая согласованную обработку, упрощая код. Что касается композитных представлений, это поможет вам создать обертывающий modedl, например панель с некоторыми элементами в ней, другой виджет, являющийся частью панели, имеющий некоторые другие элементы в ней и так далее. проверьте это сообщение http://stackoverflow.com/questions/13578312/mvc-differences-between-two-step-and-composite-view-patterns –

+0

Синглтон является спорным. http://stackoverflow.com/q/137975/1168342 – Fuhrmanator