Что такое MVC и каковы его преимущества?

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

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

Pros

  1. Дисплей и обработка разделены

Cons

  1. Не так далеко

MVC – это разделение m odel, v iew и c ontroller – не более того, не что иное. Это просто парадигма; идеал, который вы должны иметь в своем сознании при разработке classов. Избегайте смешивания кода из трех категорий в один class.

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

Диалоговое окно «Сохранить файл» ( представление ) в конечном счете передает путь, который когда-то выбран пользователем, на controller , который затем запрашивает модель данных и выполняет фактическую экономию.

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

Разделение забот – это крупный.

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

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

Здесь можно найти хороший круг всех типов MVC.

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

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

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

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

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

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

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

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

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

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

Такая же модель может иметь любые виды просмотров, например), такую ​​же информацию можно показать в виде разных графических представлений. В одном и том же представлении могут быть разные модели no.of, например) различные подробные данные могут отображаться как один граф, называемый гистограммой. Это то, что является повторным использованием как View, так и Model.

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

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

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

Вот хороший ответ на MVC Advantages и вот статья Как создать дружественный URL-адрес для SEO.

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

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

! [mvc architecture] [1]

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

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

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

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

Interesting Posts

Почему в нашем проекте требуются интерфейсные слои / абстрактные classы?

Как анализировать математическое выражение, заданное как строку, и возвращать число?

Как ссылаться на управляемые bean-компоненты JSF, которые предоставляются в JAR-файле?

Пользовательская анимация для нажатия UIViewController

Не удается открыть конфигурацию маршрутизатора DWR-112

Размер жесткого диска меньше, чем маркированный – накопитель на 320 ГБ содержит только 60 ГБ

Схема для многоязычной базы данных

java.lang.NoClassDefFoundError: сбой разрешения: Landroid / support / v4 / os / BuildCompat

Управление сеансом спящего режима (когда его закрыть вручную)

Есть ли эмулятор консоли Windows?

Стандартным клавишам F * требуется удерживать клавишу Fn на Compaq CQ62

как настроить «Основной class» в «Запуск конфигураций» в Eclipse

Один class для правила файла в .NET?

Как установить компоненты cygwin из командной строки?

Значение нового classа (…) {{…}} Инициализация idiom

Давайте будем гением компьютера.