Модель, Вид и Контроллер - что должно создавать что? - PullRequest
12 голосов
/ 04 декабря 2011

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 04 декабря 2011

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

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

Также контроллер может создать класс Model для обслуживания потребностей в обработке данных (сохранение данных в базе данных и т. Д.) Илислужить основой для возврата View.

Суммирование:

  1. Контроллер всегда создается основной функцией
  2. Модель может создаваться основной функцией или Controller (может бытьтакже от View? Зависит от реализации MVC)
  3. View должен быть создан Controller (возможно, на основе данных из Model).
4 голосов
/ 04 декабря 2011

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

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

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

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