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

StackOverflow https://stackoverflow.com/questions/1866821

Вопрос

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

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

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

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

Какой из них истинен ?

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Находясь в шаблоне проектирования, шаблон не могу быть реализован, в котором код может быть написан с использованием нескольких технологий, таких как класс AdminUser в Java, Класс Customer в C #, класс Partners в Php и шаблон factory в Ruby :);hmmm..so легко ?:)

Я знаю, что на этот вопрос был дан ответ некоторое время назад, но никто еще не упомянул книгу, которая сделала MVC знаменитой:Архитектура программного обеспечения, ориентированная на шаблоны (POSA), авторства Buschmann и др., опубликованная в 1996 году.Хотя POSA и не так широко читаема, как книга Gamma и др. "Шаблоны проектирования", она является одной из основополагающих книг, используемых сообществом разработчиков шаблонов.

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

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

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

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

  1. Проектирование архитектуры Microsoft.СЕТЕВЫЕ решения для предприятия (Microsoft press)

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

  3. Разрабатывайте Шаблоны решений, Используя Microsoft.NET (Microsoft press)

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

  5. Практическое руководство по корпоративной архитектуре (Прентис-Холл)

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

Джош Смит

Шаблоны проектирования внутри триады классов Model/ View / Controller (MVC) включают в себя и могут не ограничиваться:

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

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

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

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

  • Декоратор, добавление прокрутки к представлению.


Ссылка

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

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

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

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

MVC - это шаблон архитектуры.Очень четко изложено и показано на http://molecularsciences.org/zend/mvc_model_view_controller

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top