MVC + Какой шаблон для этого отношения 1: n - PullRequest
0 голосов
/ 02 апреля 2009

У меня есть серверное приложение с графическим интерфейсом. Написано в C #. Теперь я хочу использовать шаблон MVC для всего приложения.

Обычно у вас есть 1 модель, 1 контроллер и, возможно, n представлений. Ладно, у меня есть все, но я не уверен с моделью.

Моя ситуация: Существует 1 состояние сервера, которое может быть в сети / офлайн, с количеством клиентов и т. Д. Это может быть моя "ServerModel". Я буду обрабатывать сетевое соединение через мою сетевую библиотеку и создаю объект ученика, если он подключен. Это все происходит здесь. Представление будет замечено, если есть новый студент, и отобразит элемент GUI для нового студента (через контроллер). Теперь, на мой взгляд, есть действие, связанное со специальным учеником, и контроллер получает уведомления «StudentChanged» и получает ученика, который изменился.

Вопрос: Контроллер теперь может напрямую изменить студента ИЛИ сообщить ServerModel, как изменить студента. Второй метод, на первый взгляд, кажется чрезмерным, но дизайн MVC остается ясным. Я хотел бы изменить студента прямо с контроллера. Но я не уверен, что это нарушение MVC (студент - не модель, а часть модели) приносит какие-либо недостатки в дальнейшей разработке или гибкость всего кода.

Привет из Гамбурга;)

Ответы [ 2 ]

1 голос
/ 03 апреля 2009

Контролер должен собрать информацию, которую пользователь хочет изменить, об ученике и передать ее в представление.

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

Например

  1. Пользователь выполняет на пользовательском интерфейсе действие, которое он хочет изменить ученику
  2. Пользовательский интерфейс уведомляет View о том, что пользователь хочет изменить студента через интерфейс.
  3. Представление выполняет ChangeStudent CommandObject
  4. CommandObject отображает пользовательский интерфейс изменения ученика, который был зарегистрирован в представлении пользовательским интерфейсом при запуске приложения.
  5. Пользователь взаимодействует с Изменением Студенческий интерфейс. Когда пользователь сделан команда извлекает информацию.
  6. Команда изменяет модель и закрывает интерфейс пользователя ChangeStudent.
  7. Команда уведомила View это сделано.
  8. Представление говорит UI, что команда сделано.
  9. Обновления интерфейса.
0 голосов
/ 02 апреля 2009

Практическое правило: не усложняйте модель, позвольте контроллеру выполнить свою работу.

...