MVC действительно четырехголовый шаблон? - PullRequest
3 голосов
/ 24 марта 2010

Это только я или MVC действительно Модель-Вид / Вид контроллера-Модель / Модель контроллера с двумя разными контроллерами? альтернативный текст http://www.hupcapstudios.com/projects/mvc/mvcvmc.gif

Ответы [ 4 ]

1 голос
/ 24 марта 2010

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

0 голосов
/ 30 мая 2012

Лучше изменить моникер на что-то более точное

Алгоритмический код, код IO, код управления инициализацией / временем выполнения, код ошибки / прерывания, код события / сообщения.

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

MVC оказывает неблагоприятное вирусное воздействие на системы кода, заставляя его жесткую модель действовать на всех проектирование операций в кодовой базе . Вот почему профессорам CS и поставщикам программного обеспечения на основе моделей это нравится, а не потому, что оно превосходит ту или иную парадигму. Разделение обязанностей позволяет более четко моделировать и пересматривать на этапе планирования, и это прекрасно для проектирования базы данных, но не является правильным инструментом для каждой задачи программирования. Взаимосвязанное программирование событий (игры, робототехника, руководство) позволяет использовать парадигмы обмена сообщениями с центральным контроллером сообщений, но представления данных могут или не могут потребоваться для взаимодействия. Повторное использование кода является определяющей причиной желания MVC, так что все представления могут быть присоединены ко всем моделям с помощью одного объекта контроллера. Это глупо во многих случаях. Истинный OO будет диктовать, что каждый объект знает, как просматривать (выполнять IO) на себя. Чистым MVC было бы то, что объекты модели не имели бы понятия о IO или о том, для чего они используются, и Controller управляет всем этим, создавая представления для каждого объекта. Но ничто не является чистым, и существует много сообщений между всеми тремя типами объектов. Кроме того, в большинстве компьютерных языков есть вещи, которые не являются объектами, и разные способы их изменения. У MVC есть более ранний предок, который, как полагают во всех книгах, вы понимаете: базовую модель ИНИЦИАЛИЗАЦИЯ, ВХОД, ХРАНЕНИЕ, ОБРАБОТКА, ВЫХОД, ФИНАЛИЗАЦИЯ , которая, конечно, не может существовать ни одна программа без последующей. Получите правильное 6, и не имеет значения, процедурный ли он, MVC, основанный на событиях или спагетти.
Это имеет значение в последовательности: определить Проблемная область, Проектное решение, Внедрить, Отладка, Редизайн, Цикл тестирования / отладки, Развернуть, Сохранить / Изменить цикл .

MVC - это скорее методология взаимодействия для объектов в системе, чем «Лучший способ программирования». По своей природе это иерархическая система с контроллером наверху, когда реальная работа выполнена алгоритмическим кодом. Возможно, лучшая модель для некоторых задач состоит в том, чтобы модель представляла собой собственный контроллер и работала непосредственно с IO-кодом (представлениями), а не со средним уровнем обработки объектов.

0 голосов
/ 24 марта 2010

Я считаю, что эти паттерны являются скорее свободными руководящими принципами, чем строгими. Я использую много MVVM (представлен в WPF, но отлично работает со всем, что поддерживает хорошую двухстороннюю структуру привязки), и я всегда вижу, что какой-то контроллер (или контроллеры) используется с ним. Каждый проект индивидуален и имеет разные потребности в зависимости от размера, цели и т. Д.

0 голосов
/ 24 марта 2010

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

...