Вопрос

Я нашел Что такое mvp и mvc и в чем разница но на самом деле это не давало ответа на этот вопрос.

Недавно я начал использовать MVC, потому что это часть фреймворка, который собираюсь использовать я и мой партнер по работе.Мы выбрали его, потому что он выглядел простым и отделял процесс от отображения. Есть ли какие-то дополнительные преимущества, о которых мы не знаем и которые могли упустить?

Плюсы

  1. Отображение и обработка разделены


Минусы

  1. Пока никаких
Это было полезно?

Решение

MVC - это разделение mодель, view и controller — ни больше, ни меньше.Это просто парадигма;идеал, который вы должны иметь в глубине своего сознания при разработке классов.Избегайте смешивания кода из трех категорий в один класс.

Например, в то время как таблица grid Вид очевидно, что данные должны быть представлены после показа, в них не должно быть кода о том, откуда извлекать данные или какова их собственная структура ( Модель) похоже.Аналогично, хотя у него может быть функция суммирования столбца, фактическое суммирование должно происходить в контроллер.

Диалоговое окно "сохранить файл" (Вид) в конечном счете передает путь, однажды выбранный пользователем, к контроллер, который затем запрашивает Модель для получения данных и выполняет фактическое сохранение.

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

Другие советы

Разделение забот - это главное.

Возможность разделить эти компоненты по отдельности упрощает повторное использование кода и независимое тестирование.Если вы на самом деле не знаете, что такое MVC, будьте осторожны, пытаясь понять мнения людей, поскольку все еще существуют некоторые разногласия по поводу того, что такое "Модель" (будь то бизнес-объекты / наборы данных / таблицы данных или если она представляет базовый уровень сервиса).

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

Доступен хороший обзор всех различных типов MVC здесь.

У Джеффа есть Публикация об этом, в противном случае я нашел несколько полезных документов на веб-сайте Apple, в разделе Cocoa tutorials (этот например).

Я думаю, что еще одним преимуществом использования шаблона MVC является то, что он открывает двери для других подходы к дизайну, такому как MVP /Presenter first и многим другим шаблонам MV *.

Без этого фундаментального разделения "компонентов" дизайна внедрение этих методов было бы намного сложнее.

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

Редактировать:

Если я правильно помню, это довольно хороший подкаст на MV * patterns (слушал это некоторое время назад!)

Один из недостатков, о котором я могу подумать, заключается в том, что вам нужен действительно быстрый доступ к вашим данным в вашем представлении (например, к данным игровой анимации, таким как положение костей). В этом случае очень неэффективно сохранять уровень разделения.

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

Если вы следите за подкастами stackoverflow, вы можете услышать, как Джефф (и Geoff?) обсуждает его величие. http://blog.stackoverflow.com/2008/08/podcast-17/.Но помните, что использование этих отдельных слоев означает, что в будущем все будет проще - и сложнее сейчас.И слои может сделай все медленнее.И они могут вам не понадобиться.Но пусть это не помешает вам узнать, что это такое - при создании больших, надежных и долговечных систем это бесценно.

Он разделяет модель и представление, управляемое контроллером, Что касается модели, то ваши модели должны соответствовать архитектуре OO, будущие улучшения и другое обслуживание базы кода должны быть очень простыми, а база кода должна использоваться повторно.

Одна и та же модель может иметь любое количество просмотров, например) одна и та же информация может быть отображена в разных графических представлениях.Одно и то же представление может иметь разное количество моделей, например) разные детали могут быть показаны в виде одного графика, скажем, в виде гистограммы.Это то, что представляет собой повторное использование как Представления, так и Модели.

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

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

MVC - это всего лишь общий шаблон проектирования, который в контексте бережливой разработки веб-приложений упрощает разработчику сохранение HTML-разметки на уровне представления приложения (view) отдельно от методов, которые получают и обрабатывают клиентские запросы (контроллеры), и представлений данных, которые возвращаются в view (модели).Все дело в разделении задач, то есть в сохранении кода, который служит одной функциональной цели (напримеробработка клиентских запросов), изолированных от кода, который служит совершенно другому функциональному назначению (например,представление данных).

Это тот же принцип, по которому любой, кто потратил более 5 минут на создание веб-сайта, может оценить необходимость сохранения HTML-разметки, JavaScript и CSS в отдельных файлах:Если вы просто соберете весь свой код в один файл, то в итоге получите спагетти, которые впоследствии практически невозможно будет редактировать.

Поскольку вы спросили о возможных "минусах": Я не специалист по проектированию архитектуры программного обеспечения, но, основываясь на моем опыте разработки в MVC, я думаю, также важно отметить, что следование строгому шаблону проектирования MVC без излишеств наиболее полезно для 1) легких веб-приложений или 2) в качестве уровня пользовательского интерфейса более крупного корпоративного приложения.Я удивлен, что об этой спецификации больше не говорится, потому что MVC не содержит явных определений для вашей бизнес-логики, моделей предметной области или вообще чего-либо на уровне доступа к данным вашего приложения.Когда я начал разрабатывать в ASP.NET MVC (т.е.еще до того, как я узнал о существовании других программных архитектур), я получал бы в итоге очень раздутые контроллеры или даже просматривал модели, битком набитые бизнес-логикой, которая, если бы я работал над корпоративными приложениями, затруднила бы модификацию другим разработчикам, незнакомым с моим кодом (т.Е.еще спагетти).

Одним из основных преимуществ MVC, которое здесь не упоминалось, является то, что MVC предоставляет RESTful URL, что позволяет осуществлять SEO.Когда вы правильно называете свои контроллеры и действия, поисковым системам становится легче находить ваш сайт, если они просматривают только URL-адреса вашего сайта.Например, у вас есть веб-сайт по продаже автомобилей и страница, на которой отображаются доступные автомобили Lamborghini Veneno, вместо того чтобы www.MyCarSale.com/product/6548 перейдя на страницу, вы можете выбрать www.MyCarSale.com/SportCar/Lamborghini-Veneno url-адрес для целей SEO.

Здесь это хороший ответ на преимущества MVC и здесь это статья О том, Как создать URL, удобный для SEO.

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

Здесь вы можете увидеть еще несколько пунктов о Основные преимущества архитектуры MVC.

![архитектура mvc][1]

Model–view-controller (MVC) - это программный архитектурный шаблон для реализации пользовательских интерфейсов.Он делит данное программное приложение на три взаимосвязанные части, чтобы отделить внутреннее представление информации от способов представления информации пользователю или ее принятия от него.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top