Подтвердить что ты не робот

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

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

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

Pros

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


против

  • Пока нет
4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Разделение опасений - это большой вопрос.

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

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

Хорошее округление всех различных типов MVC доступно здесь.

Ответ 3

Jeff имеет post об этом, иначе я нашел несколько полезных документов на веб-сайте Apple, в Cocoa учебниках (этот.

Ответ 4

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

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

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

Edit:

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

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

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

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

! [mvc architecture] [1]

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

Ответ 11

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

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

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