Какое лучшее определение MVC? - PullRequest
11 голосов
/ 08 января 2009

Я использую Zend Framework в конфигурации MVC, читаю о ruby ​​на рельсах и планирую проверить другие инфраструктуры MVC в Python (Django?) ... мне очень нравится, как он изолирует некоторые части логики, безопасности и Проверка. Но после всего лишь одного года использования я прочитал ответ здесь , в котором говорилось, что почти все имеют неправильное определение MVC, и это заставило меня задуматься ... Что такое правильное определение MVC и где я могу прочитать о шаблоне и стандартные реализации?

Обновление: Полагаю, мы все знаем определение BASIC (есть модель контроллер и представление, действия на контроллере переходят к представлению с некоторой информацией после создания чего-либо с моделью), но я Хотелось бы узнать, какое определение вы ДУМАЕТЕ, что все ЗНАЮТ, и почему это неправильно (и, возможно, это объяснит всем, где могут быть ошибки, мнения и, конечно же, какова ваша реальная точка зрения на это)

Ответы [ 7 ]

20 голосов
/ 08 января 2009

Самая большая ошибка, которую я нахожу в понимании MVC людьми, заключается в том, что они думают, что шаблон охватывает больше, чем он. Точнее, люди часто думают:

  • Модель = База данных
  • Просмотр = HTML
  • Контроллер = Бизнес-логика и все остальное.

Зачастую в небольших приложениях все работает, но в реальности MVC - это способ отделить бизнес-код от кода презентации. Модель делает всю настоящую деловую работу. Представления обеспечивают внешний вид, а контроллер отображает одно на другое.

14 голосов
/ 08 января 2009

См. Главу 14 книги «Образцы архитектуры корпоративных приложений» Мартина Фаулера.

Раздел в MVC начинается с:

"Model View Controller (MVC) является одним из самый цитируемый (и самый неправильно цитируемый) узоры вокруг. Это началось как рамки, разработанные Trygve Реенскауг для платформы Smalltalk в конце 1970-х годов. С тех пор он имеет играл влиятельную роль в большинстве UI рамки и в мышлении о UI design. "

Также сказано:

"Когда я думаю о MVC, я вижу два основные разделения: разделение презентация из модели и отделяя контроллер от вид.

...

Из них отделение презентация и модель является одним из наиболее важные принципы проектирования в программное обеспечение, и единственный раз, когда вы не должно следовать это очень просто системы, где модель не имеет реального поведение в этом все равно. Как только вы получить некоторую невизуальную логику, вы должны применить разделение. К сожалению, много фреймворков UI делают это трудно, а те, которые не являются часто учат без разрыва.

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

3 голосов
/ 08 января 2009

Я доверяю определению MVC, данному здесь Мартином Фаулером. Однако вы можете заметить тот факт, что более или менее эти рамки имеют свои собственные настройки. Например, фреймворк, такой как Django, является более Model-Template-Controller из-за своей функции шаблонов.

2 голосов
/ 03 ноября 2016

Шаблон модель-представление-контроллер предлагает три основных компонента или объекта для использования в разработке программного обеспечения:

  • Модель, которая представляет основную логическую структуру данных в программном приложении и связанный с ним класс высокого уровня. Эта объектная модель не содержит никакой информации о пользовательском интерфейсе.
  • Представление, представляющее собой набор классов, представляющих элементы пользовательского интерфейса (все, что пользователь может видеть и реагировать на экране, например кнопки, поля отображения и т. Д.)
  • Контроллер, представляющий классы, связывающие модель и представление, и используемый для связи между классами в модели и представлении.
2 голосов
/ 08 января 2009

Я верю в то же самое. Насколько мне известно, все, что удается разделить задачи отображения, данные / бизнес-объекты и управление ими (инициализация, реагирование на ввод пользователя), получает преимущество, которое MVC стремится предоставить.

Цель состоит в том, чтобы переместить эти элементы в повторно используемые компоненты и иметь возможность обмениваться различными реализациями, а также иметь возможность тестировать отдельные компоненты в отдельности. ИМО, это то, что MVC все о.

Это - довольно хорошее описание некоторых исторических и популярных реализаций парадигмы MVC. Мы должны добавить туда шаблон Модель - Вид - ViewModel , который также рекомендуется для WPF.

1 голос
/ 13 апреля 2018

Проект делится на три части:

  1. модель: представлена ​​в базе данных.
  2. view: представлен в интерфейсе вашего проекта, что вы можете сделать это, используя html, javaScript и css.
  3. контроллер: это ваша бизнес-логика, представленная в ваших функциях, и она также учитывает связь между моделью и представлением, которые также представляют уровень безопасности.
1 голос
/ 11 августа 2015

MVC является одной из трех моделей программирования ASP.NET. MVC - это платформа для создания веб-приложений с использованием конструкции MVC (Model View Controller): Модель представляет ядро ​​приложения (например, список записей базы данных). В представлении отображаются данные (записи базы данных).

...