MVC - это шаблон дизайна или архитектурный шаблон

109

Согласно Sun и Msdn, это шаблон проектирования.

Согласно Википедии, это архитектурный образец.

По сравнению с шаблонами проектирования архитектурные шаблоны больше по масштабу. (Википедия - Архитектурный образец )

Или это архитектурный образец, который также имеет образец дизайна?

Какая из них правда?

JCasso
источник
1
Потому что должен быть один верный ответ ...
Майк Джи,
согласно Дэйву из Product Madness, MVC - это шаблон проектирования, как и RobotLegs. : P
andygoestohollywood

Ответы:

56

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


источник
16
Да, я бы сказал, что MVC - это архитектурный шаблон для вашего уровня презентации.
murki
8
Я категорически не согласен с тем, что «MVC в основном относится к уровню пользовательского интерфейса / взаимодействия приложения». Модель «M» в MVC - это бизнес-уровень, который вы, вероятно, захотите разделить на несколько уровней.
mewm
Да, это неправильный ответ. MVC абсолютно не касается UI / взаимодействия. У вас может быть mvc как на передней, так и на задней стороне, в начале представления часто был просто html / js, .jsp или .phtml, а сервер определял контроллер и модель. Пример JSP (представление), JavaBeans (модель), сервлет (контроллер). Такая же концепция со всеми известными фреймворками php (symphony, zend, cake и т. Д.). Но в настоящее время интерфейсные фреймворки выглядят как серверные приложения, а современные фреймворки javascript используют mvc (html ваше представление, контролируйте ваш скрипт и моделируйте ваши js-объекты как сущность)
amdev
40

Почему одно из них должно быть правдой?

Оба могут быть правдой, в зависимости от точки зрения.

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

Его также можно рассматривать как просто шаблон проектирования, абстрактное понятие, применимое к любому приложению.

Одед
источник
27

Шаблоны проектирования говорят, как эффективно писать код (с учетом метрик кода ).

Несколько преимуществ:

  1. Легко обслуживаемый
  2. Высокая возможность повторного использования
  3. Читаемость из-за абстракций

Архитектурные шаблоны говорят, как эффективно использовать ресурсы.

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

В MVC: а). Представления могут быть созданы с использованием шаблонов javascript, а также может использоваться html b). Контроллеры могут быть написаны .NET framework и c). Модели могут быть написаны на Java - может использоваться java-сервис, который возвращает только данные json.

В то время как в шаблоне проектирования, шаблон не может быть реализован , в которых код может быть написан на различных технологии , такие как класс AdminUser в Java, класс Customer в C #, класс партнеров в Php и шаблон фабрики в Рубине :); хммм .. так просто? :)

vrluckyin
источник
6

Я знаю, что на него ответили некоторое время назад, но никто еще не упомянул книгу, сделавшую MVC известной: Pattern-Oriented Software Architecture (POSA), Бушманн и др., Опубликованную в 1996 году. Хотя и не так широко читается, как книга Design Patterns. от Gamma и др., POSA - одна из основополагающих книг, используемых сообществом шаблонов.

Да, и POSA очень четко определяет MVC как архитектурный шаблон. Я догадываюсь, что MS и Sun просто небрежны и называют каждый паттерн «паттерном проектирования».

Джон
источник
3

Я думаю, что оба верны. Если вы смотрите на конкретный экземпляр MVC в такой среде, как Ruby on Rails, то это создание больше похоже на шаблон проектирования. Если вы посмотрите на MVC как на общую концепцию , это скорее архитектурный шаблон.

Джим Ферранс
источник
3

Шаблоны проектирования внутри триады классов Модель / Представление / Контроллер (MVC) включают, но не ограничиваются:

  • Наблюдатель , разделяющий объекты так, чтобы изменения одного (модели) могли повлиять на любое количество других (представлений), не требуя, чтобы измененный объект (модель) знал подробности других (представлений).

  • Composite , который позволяет нам обращаться с групповым объектом (составным представлением) так же, как мы обрабатываем один из его отдельных объектов (компоненты представления).

  • Стратегия , где представление использует экземпляр подкласса Controller для реализации конкретной стратегии ответа; чтобы реализовать другую стратегию, просто замените экземпляр контроллером другого типа.

  • Заводской метод , определяющий класс контроллера по умолчанию для представления.

  • Декоратор , добавляющий прокрутку в вид.


Ссылка

  • Страницы с 4 по 6 (Раздел 1.2 Шаблоны проектирования в Smalltalk MVC)
  • Страницы с 293 по 304 (шаблон проектирования Observer)
  • Страницы с 163 по 174 (составной шаблон проектирования)
  • Страницы 315–324 (шаблон разработки стратегии)
  • Страницы с 107 по 116 (шаблон проектирования Factory Method)
  • Страницы с 175 по 185 (шаблон оформления Decorator)

Эрик Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес. Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования . Аддисон-Уэсли, Рединг, Массачусетс, 1994.

Джордж
источник
1
Спасибо, все остальные ответы неверны. Это абсолютно не «в зависимости от точки зрения», и наличие десятков или сотен голосов не исправит ничего неправильного. MVC - это не сам по себе шаблон проектирования, это способ трехуровневой архитектуры вашего кода с использованием нескольких упомянутых вами шаблонов проектирования. Все фреймворки, реализующие MVC за сценой, используют концепцию Observable, Strategy и составного шаблона. Лучший способ понять MVC - создать свою собственную реализацию, и тогда вы поймете лежащие в основе шаблоны проектирования.
amdev
2

MVC всегда упоминается и вводится как / в уровне представления в книгах по архитектуре программного обеспечения.

Прочтите эти книги:

  1. Архитектура решений Microsoft.NET для предприятий (Microsoft Press)

  2. Профессиональные шаблоны проектирования ASP.NET (Wrox)

  3. Шаблоны корпоративных решений с использованием Microsoft.NET (Microsoft Press)

  4. Шаблоны архитектуры корпоративных приложений (Аддисон Уэсли)

  5. Практическое руководство по архитектуре предприятия (Prentice Hall)

Салех Рахимзаде
источник
6
почему 2 ответа? вы можете добавить этот ответ в качестве дополнения к вашему первому
frogatto
2

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

Джош Смит

Салех Рахимзаде
источник
1

По словам Мартина Фаулера, это архитектуры с графическим интерфейсом пользователя: архитектуры Мартина Фаулера с графическим интерфейсом.

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

Икер Хименес
источник