Почему шаблон проектирования MVC широко используется для разработки веб-сайтов? - PullRequest
6 голосов
/ 07 февраля 2011

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

У меня естьтакже заметил, что платформа codeigniter использует как шаблон синглтона, так и шаблон MVC.Является ли этот тип гибридного шаблона проектирования распространенным и эффективен ли он или использовался в codeigniter по определенной причине?

Ответы [ 5 ]

3 голосов
/ 07 февраля 2011

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

Это полезно для общей номенклатуры и потому, что люди имеют смутное представление о том, что предполагается делать.Однако существуют лучшие образцы, и, например, Model-View-Presenter лучше описывает, что сделано на практике (термин просто не используется, потому что он неизвестен).Есть и другие варианты, которые технически заменили MVC.

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

Вот краткий обзор имен шаблонов проектирования API-интерфейсов общих объектов:
http://www.fluffycat.com/PHP-Design-Patterns/

Некоторые обсуждения основных понятийMVC здесь (возможно, не актуально, но очень интересно):
http://c2.com/cgi/wiki?MvcIsNotImplementable
http://c2.com/cgi/wiki?MvcIsNotObjectOriented

1 голос
/ 07 февраля 2011

В общем:

  • MVC (модель – представление – контроллер) - это программная архитектура.
    Важно: шаблон проектирования MVC отсутствует;)
  • Шаблон проектированияявляется общим многоразовым решением часто встречающейся проблемы в разработке программного обеспечения.Другими словами: это как лучшая практика для общей проблемы.
    • Примеры: Singleton, Factory Method, Adapter, Decorator и т. Д.

Так почему MVC используется так часто?
Причина довольно проста: Если все разработчики проекта знакомы с MVC (или другой архитектурой), у них есть общее понимание того, где размещать код или где искать код.Это значит быть эффективным и писать хороший код.Итак, в конце концов, речь идет о взаимопонимании.

1 голос
/ 07 февраля 2011

При разработке веб-сайтов в основном происходит два процесса. У вас есть серверная часть, где данные собираются и / или обрабатываются. Тогда есть сторона клиента, где что-то должно быть представлено. (Некоторые данные передаются в просмотры на этом шаге)

Как вы знаете из ООП, хорошей практикой является добавление структуры к обрабатываемым данным. Именно здесь приходят модели. Наконец, у вас есть контроллеры, которые выполняют обработку моделей, а затем передают данные в представления.

Вы можете сказать, что MVC является порождением двух принципов: разделение на стороне сервера и клиента и ООП.

Что касается одноэлементных классов: они действительно используются для совместного использования ресурсов, таких как база данных.

1 голос
/ 07 февраля 2011

Потому что это имеет смысл! :)

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

  • Модель - отвечает за бизнес-логику и постоянство

  • Контроллер - Управляет приложением и работает как мост между моделью и представлением

  • Просмотр - представляет модель пользователю

1 голос
/ 07 февраля 2011

Я думаю, что вы путаете некоторые понятия здесь.Прежде всего, MVC - это не просто шаблон проектирования, а скорее общая концепция организации приложения.B / c не существует одной или лучшей реализации для MVC.MVC - это то, что ваш здравый смысл говорит вам о структурировании обработки данных.Отделение того, что вы видите, от того, что происходит внутри, и какая информация обрабатывается вообще.

Синглтоны обычно используются в MVC, когда у вас много разных объектов, использующих одни и те же ресурсы.Чтобы организовать это, вы можете использовать Реестр, реализованный как отдельный, для предоставления доступа к БД, например.

С наилучшими пожеланиями

Раффаэль

РЕДАКТИРОВАТЬ:

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

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

Также я считаю, что очень важно различать бизнес-логику иконтроллер.Получить легко запутался.Но BL относится к модельному ряду.В этом смысле я не думаю о MVC как о чем-то вроде треугольника, а скорее о трехуровневой системе V / C / M.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...