Подтвердить что ты не робот

Модель, View & Controller - что должно создать что?

В соответствии с хорошими практиками программирования, в начале времени выполнения программы, какие из компонентов Controller, Model и View должны быть созданы первым, а какие из них должны создавать другие два?

Я имею в виду, должна ли основная функция сначала создавать контроллер, тогда контроллер должен создать как модель, так и представление и сделать их известными им как-то?

Или лучше начать с создания представления, которое перед отображением будет инициализировать контроллер, который будет создавать модель?

Или, может быть, модель должна быть первой? Или все они должны быть созданы в главной функции параллельно? Каков правильный способ внедрения MVC?

edit: меня интересует общий ответ, хотя в настоящее время я работаю с Java Swing и Windows Phone 7.

4b9b3361

Ответ 1

Я думаю, каждый из них может быть создан индивидуально.

  • Если контроллер отвечает за создание модели, это означает, что вы не можете иметь модель без контроллера и что всегда существует взаимно однозначное сопоставление между моделью и контроллером. Например, для веб-сайта у вас может быть контроллер для обычных данных и один для xml-версии этих данных (хотя обычно это один и тот же контроллер, и вы просто указываете протокол, который хотите использовать).
  • Если диспетчер отвечает за создание представления, вы закончите сопоставление "один к одному" между контроллером и представлением. Контроллер просто обрабатывает входящий запрос, выполняет некоторую логику и дает ответ. Ему все равно, кто запрашивает данные. Например, для веб-приложения вы можете иметь RSS-канал и HTML-страницу, используя один и тот же контроллер. Другим примером является ваше типичное приложение Rails, где один контроллер сопоставляет несколько видов (индексный вид, представление просмотра, вид редактирования,...)

Однако, кто-то несет ответственность за то, чтобы связать их все вместе, но это будет ваше основное приложение и ни один из этих компонентов

Ответ 2

Я бы сказал, что объекты Controller и Model могут быть созданы с помощью основной функции, а представление должно быть создано контроллером (возможно, на основе данных модели).

Контроллер должен быть создан основной функцией приложения (рабочая функция trhead? any) всякий раз, когда к приложению приходит новый запрос. Запрос может содержать некоторые сериализованные данные, которые можно десериализовать основным потоком для создания и заполнения нового объекта модели, который, в свою очередь, передается контроллеру для дальнейшей обработки. Когда контроллер завершает обработку, он может (или не должен) создавать представление для передачи результатов обработки клиенту.

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

Резюмируя:

  • Контроллер всегда создается с помощью основной функции
  • Модель может быть создана с помощью основной функции или контроллера (возможно, также с помощью View? Зависит от реализации MVC)
  • Просмотр должен быть создан контроллером (возможно, на основе данных из модели).