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





MVC - это разделение мodel, view и controller - ни больше, ни меньше. Это просто парадигма; идеал, который вы должны помнить при разработке классов. Избегайте смешивания кода из трех категорий в один класс.
Например, хотя сетка таблицы Посмотреть, очевидно, должна представлять данные после показа, она не должна иметь кода о том, откуда их извлекать, или о том, на что похожа ее собственная структура (модель). Точно так же, хотя у него может быть функция для суммирования столбца, фактическое суммирование должно происходить в контролер.
Диалог «сохранить файл» (Посмотреть) в конечном итоге передает путь, однажды выбранный пользователем, на контролер, который затем запрашивает данные у модель и выполняет фактическое сохранение.
Такое разделение ответственности обеспечивает гибкость в будущем. Например, поскольку представление не заботится о базовой модели, поддерживать несколько форматов файлов проще: просто добавьте подкласс модели для каждого из них.
Разделение проблем - это очень важно.
Возможность отделить эти компоненты друг от друга упрощает повторное использование и независимое тестирование кода. Если вы на самом деле не знаете, что такое MVC, будьте осторожны, пытаясь понять мнения людей, поскольку все еще существуют некоторые разногласия по поводу того, что такое «Модель» (будь то бизнес-объекты / DataSets / DataTables, или если она представляет базовую службу слой).
Я видел всевозможные реализации, которые называют себя MVC, но это не совсем так, и, как показывают комментарии в Статья Джеффа, MVC - спорный момент, с которым, я не думаю, разработчики когда-либо полностью согласятся.
Хороший обзор всех различных типов MVC доступен здесь.
Я думаю, что еще одним преимуществом использования шаблона MVC является то, что он открывает двери для других подходы в дизайне, таких как сначала MVP / Presenter и многие другие шаблоны MV *.
Без этого фундаментального разделения «компонентов» дизайна внедрение этих методов было бы намного труднее.
Я думаю, что это помогает сделать ваш код еще более ориентированным на интерфейс. Не только в рамках отдельного проекта, но вы почти можете начать разрабатывать общие "представления", что означает, что вы можете создавать гораздо больше шаблонов "ворчливого" кода, используемого в ваших приложениях. . Например, очень абстрактное «представление данных», которое просто берет кучу данных и передает их в общий макет сетки.
Если я правильно помню, это довольно хороший подкаст о паттернах MV * (давно уже слушал!)
Я могу придумать один недостаток: если вам нужен действительно быстрый доступ к вашим данным в вашем представлении (например, к данным игровой анимации, таким как положение костей). В этом случае очень неэффективно сохранять слой разделения.
В противном случае для большинства других приложений, которые в большей степени ориентированы на данные, чем на графику, это кажется логичным способом управления пользовательским интерфейсом.
Если вы следите за подкастами stackoverflow, вы можете услышать, как Джефф (и Джефф?) Обсуждают его величие. https://blog.stackoverflow.com/2008/08/podcast-17/. Но помните, что использование этих отдельных слоев означает, что в будущем все будет проще, а сейчас - сложнее. А слои может замедляют работу. И они могут вам не понадобиться. Но не позволяйте этому мешать вам узнать, что это такое - это бесценно при создании больших, надежных и долговечных систем.
Он разделяет модель и представление, контролируемые контроллером, Что касается модели, ваши модели должны соответствовать объектно-ориентированной архитектуре, будущие улучшения и другое обслуживание базы кода должны быть очень простыми, а база кода должна быть повторно использована.
Одна и та же модель может иметь любое количество представлений, например, одна и та же информация может отображаться в разных графических представлениях. Один и тот же вид может иметь разное количество моделей, например, разные детали могут отображаться в виде одного графика, например гистограммы. Это то, что является возможностью повторного использования как View, так и Model.
Улучшения в представлениях и другая поддержка новых технологий для построения представления могут быть легко реализованы.
Парню, который работает над дозой просмотра, не обязательно знать базовый код модели и ее архитектуру, и наоборот для модели.
Основное преимущество архитектуры MVC - разграничение уровней проекта в модели, представлении и контроллере для повторного использования кода, простоты сопровождения кода и обслуживания. Лучшее, что разработчик чувствует себя хорошо, добавляя код в промежутках между обслуживанием проекта.
Здесь вы можете увидеть еще несколько точек на Основные преимущества архитектуры MVC.
! [архитектура mvc] [1]
Модель – представление – контроллер (MVC) - это программный архитектурный шаблон для реализации пользовательских интерфейсов. Он разделяет данное программное приложение на три взаимосвязанные части, чтобы отделить внутреннее представление информации от способов, которыми информация представляется пользователю или принимается от пользователя.
MVC - это просто общий шаблон проектирования, который в контексте экономичной разработки веб-приложений позволяет разработчику хранить разметку HTML на уровне представления приложения (представление) отдельно от методов, которые получают и обрабатывают клиентские запросы ( контроллеры) и представления данных, возвращаемые в представлении (модели). Все дело в разделении задач, то есть в хранении кода, который служит одной функциональной цели (например, обработки клиентских запросов), изолированным от кода, который служит совершенно другой функциональной цели (например, представление данных).
Это тот же принцип, почему любой, кто потратил более 5 минут на создание веб-сайта, может оценить необходимость хранить разметку HTML, JavaScript и CSS в отдельных файлах: если вы просто сваляете весь свой код в один файл, вы в конечном итоге получаются спагетти, которые впоследствии практически невозможно редактировать.
Поскольку вы спросили о возможных «минусах»: Я не являюсь специалистом в области проектирования архитектуры программного обеспечения, но, основываясь на моем опыте разработки в MVC, я думаю, также важно отметить, что следование строгому шаблону проектирования MVC без излишеств наиболее полезно для 1) легких веб-приложений или 2) как слой пользовательского интерфейса более крупного корпоративного приложения. Я удивлен, что об этой спецификации больше не говорят, потому что MVC не содержит явных определений для вашей бизнес-логики, моделей предметной области или чего-либо еще на уровне доступа к данным вашего приложения. Когда я начинал разработку в ASP.NET MVC (то есть до того, как я узнал о существовании других программных архитектур), у меня были бы очень раздутые контроллеры или даже модели, полные бизнес-логики, которые, если бы я работал над корпоративными приложениями, имели бы затрудняло изменение другим разработчикам, незнакомым с моим кодом (т.е. больше спагетти).
Одно из основных преимуществ MVC, о котором здесь не упоминалось, заключается в том, что MVC предоставляет URL-адреса RESTful, которые позволяют SEO. Если вы правильно называете свои контроллеры и действия, поисковым системам будет легче найти ваш сайт, если они будут смотреть только на URL-адреса вашего сайта. Например, у вас есть веб-сайт продажи автомобилей и страница, на которой отображаются доступные автомобили Lamborghini Veneno, вместо того, чтобы ссылаться на страницу www.MyCarSale.com/product/6548, вы можете выбрать URL-адрес www.MyCarSale.com/SportCar/Lamborghini-Veneno для целей SEO.
Здесь - хороший ответ на преимущества MVC, а здесь - это статья о том, как создать удобный для SEO URL.
+1 ваша ссылка действительно потрясающая, особенно разные MVC.