MVC на Java - PullRequest
       11

MVC на Java

8 голосов
/ 27 декабря 2008

Речь идет о школьном задании, поэтому я стараюсь делать что-то по книге. Я чувствую, что овладеваю Java, но хорошая практика программирования, шаблоны проектирования и т. Д. Все для меня довольно новы.

Я сделал свою модель, и она отлично работает. Он содержит класс ученика, который содержит ряд полей со студенческой информацией (очевидно). Теперь я хочу, чтобы эта информация отображалась в паре JLabels. Проще всего передать весь объект студента в GUI и использовать JLabel.settext.getname () и т. Д. Несколько раз, и, без сомнения, это будет работать отлично. Но я чувствую, что объект студента является частью модели, и, передав его в графический интерфейс, я больше не использую шаблон MVC. Я здесь?

Я сделал объект контроллера для передачи данных в модель и из графического интерфейса и из нее, но для передачи только строк в метки или установки текста JLabel через контроллер мне нужно либо много установщиков в GUI, либо пришлось бы сделать все глобальные поля JLabels, что тоже нехорошо.

Какой-нибудь совет по этому поводу?

Ответы [ 3 ]

4 голосов
/ 27 декабря 2008

Обратите внимание, что все компоненты Swing используют шаблон MVC внутри, поэтому у них уже есть модель. Это более актуально для сложных виджетов, таких как JTable, где вы определенно хотите, чтобы ваша модель реализовала интерфейс TableModel.

Большой вопрос заключается в том, как согласовать модель вашего домена с внутренними моделями отдельных компонентов Swing. Один из способов сделать это состоит в том, чтобы в вашем классе GUI были методы setModel() и getModel(), которые преобразуются между ними, т.е. setModel() берет вашу модель и вызывает setText() для отдельных JLabels и т. Д.

1 голос
/ 27 декабря 2008

GUI должен беспокоиться обо всем интерфейсе. Я полагаю, у вас есть класс, который является вашим графическим интерфейсом для того, чтобы делать «вещи» ученику с помощью JLabels. Просто передайте свой экземпляр ученика этому классу и позвольте ему делать то, что ему нужно. Когда это будет сделано, он вызовет метод контроллера, чтобы сделать то, что нужно сделать.

OOD имеет дело с передачей объектов, которыми вы хотите манипулировать. Вам не нужно разбивать объекты на части для передачи в MVC. Вы должны действительно обойти это, если это общий случай. Модель определяет объекты данных, с которыми вы будете работать ... или, более конкретно, система будет работать с (контроллером), а пользователи будут работать с (GUI). Эти классы созданы для того, чтобы их можно было обойти. Вам придется проделать гораздо больше работы, если вы не инкапсулируете всю информацию, хе-хе:)

0 голосов
/ 27 декабря 2008

Представлению нужна ваша модель для создания пользовательского интерфейса (извлечение из модели) и получения обновлений от него (проталкивание по модели). В идеале модель представлена ​​на вид только для чтения. Контроллеры предоставляют методы, которые представление будет использовать для обновления модели, для хорошего разделения проблем.

Существует множество различных форм и интерпретаций того, что же такое MVC, попробуйте поискать его в Google. Кроме того, вы часто можете найти MVC на разных уровнях в вашем приложении (например, модель Swing, модель вашего домена, ...).

С MVC и вариантами на MVC, самое важное, это то, что вы можете объяснить отдельные подшаблоны (Observer, Facade, ...) и защитить выбранные вами варианты дизайна (преимущества / недостатки) вместо попытки реализовать один и единственный уникальный шаблон MVC, если он существует.

Так что мой совет для вашего задания, если это возможно, конечно, будет заключаться в том, чтобы реализовать что-то, что хорошо работает, вдохновлено тем, что вы читали на MVC и его подшаблонах, и только потом увидите, насколько хорошо оно соглашается или не соглашается с некоторыми " традиционные "описания паттернов MVC вы можете найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...