MVC - це проектний або архітектурний зразок


109

На думку Sun та Msdn - це модель дизайну.

Згідно з Вікіпедією, це архітектурна закономірність

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

Або це архітектурний зразок, який також має шаблон дизайну?

Яка з них справжня?


1
Бо повинен бути один правдивий відповідь ...
Майк Г

За словами Дейва в продукт Божевілля, MVC - це модель дизайну, як і RobotLegs. : P
andygoestohollywood

Відповіді:


56

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


16
Так, я б сказав, що MVC - це архітектурна схема для вашого рівня презентації.
murki

8
Я категорично не погоджуюсь з тим, що "MVC здебільшого стосується шару інтерфейсу / взаємодії програми". "M" / модель в MVC - це бізнес-рівень, який, ймовірно, ви хочете розділити на кілька ярусів.
mewm

Так, ця відповідь неправильна. MVC абсолютно не стосується інтерфейсу користувача / взаємодії. Ви можете ідеально мати mvc на передній і на задній стороні, на початку подання часто було лише html / js або .jsp або .phtml, а сервер визначає контролер і модель. Приклад JSP (вид), JavaBeans (модель), сервлет (контролер). Те саме поняття з усіма відомими рамками php (симфонія, зенд, торт тощо). Але сьогодні фронтенні рамки виглядають як додаткові додатки, а сучасні рамки 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, клас клієнта в C #, клас партнерів в Php і заводський візерунок в Ruby :); хммм .. так просто? :)


6

Я знаю, що на нього було дано відповідь деякий час тому, але ще ніхто не згадав про книгу, яка зробила відомий MVC: Орієнтована на візерунок архітектура програмного забезпечення (POSA), Buschmann et al., Опублікована в 1996 році. , Гамма та ін., POSA - одна з фундаментальних книг, яка використовується спільнотою моделей.

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


3

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


3

Шаблони дизайну всередині тріади класів Model / View / Controller (MVC) включають і не можуть обмежуватись ними:

  • Спостерігач , розв'язуючи об’єкти так, що зміни на один (модель) можуть впливати на будь-яку кількість інших (поглядів), не вимагаючи від зміненого об'єкта (моделі) знати деталі інших (поглядів).

  • Композитний , який дозволяє нам обробляти груповий об’єкт (складений вигляд) так само, як ми ставимось до одного з його окремих об'єктів (перегляд компонентів).

  • Стратегія , де представлення використовує екземпляр підкласу Controller для реалізації певної стратегії реагування; щоб реалізувати іншу стратегію, просто замініть екземпляр на інший тип контролера.

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

  • Декоратор , додаючи прокрутку до подання.


Довідково

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

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


1
Дякую, всі інші відповіді неправильні. Це абсолютно не "залежно від точки зору" і мати десятки чи сотні голосів не призведе до чогось неправильного. MVC - це не сам шаблон дизайну, це спосіб архітектури вашого коду в 3 шари, використовуючи шаблон дизайну кілька разів. Усі рамки, що реалізують MVC за сценою, використовують концепцію спостережуваного, стратегії та складеного зразка. Найкращий спосіб зрозуміти 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

Якщо ви помістите десять архітекторів програмного забезпечення в кімнату і змусите їх обговорити, що таке модель Model-View-Controller, ви отримаєте дванадцять різних думок. … Деякі з пуристів там неминуче матимуть труднощі з тим, що я називаю “MVC”. Не соромтесь залишити палаючий коментар на дошці повідомлень у нижній частині цієї веб-сторінки. Я із задоволенням буду розважати різні точки зору того, що означає MVC, але майте на увазі, що мені все одно.

Джош Сміт


1

За словами Мартіна Фаулера, це архітектури графічного інтерфейсу: архітектури Мартіна Фаулера-GUI

Це залежить від розміру програми, оскільки воно впливає лише на класи, пов'язані з графічним інтерфейсом, в невеликому (переважно графічному інтерфейсі) це може вважатися архітектурним малюнком, тоді як у величезному - це просто шаблон дизайну, який ви застосовуєте до графічного інтерфейсу. код (може становити 10% коду додатків).


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.