2012-04-11 7 views
4

При поиске объяснений и руководств MVC в Google я просмотрел все ссылки на первых 4 страницах (поисковый запрос: mvc php) и сделал заметки. Я обнаружил, что MVC объясняется четырьмя различными способами. Я понимаю, что теоретически все они сводятся к одному и тому же, но, видя, что большинство шаблонов в программировании получают разные имена, мне было интересно, почему эти 4 совершенно разных шаблона все знают под тем же именем. (имея в виду, что 5-й шаблон с использованием той же методологии называется MVP). В 4 модели я нашел это (надеюсь, что это попадается правильно, как я безнадежен в ASCII искусства):Что такое «настоящий» шаблон MVC?

U --> C --> M --> V --> U 


     V --> U 
    ^
     | 
U --> C <-> M 


      U 
      ^
      | 
U --> C --> V <-> M 


     M <-> V --> U 
    ^ ^
     |  | 
U --> C ----| 

Где U = Пользователь

+1

У вас есть конкретная проблема с одним или несколькими из этих шаблонов? Можете ли вы спросить об этом? В противном случае это просто семантика. –

+0

Второе изображение имеет для меня наибольший смысл. Третий и четвертый выглядят как бессмыслица, если только они не относятся к конкретной структуре, которая использует модели как DTO-модели viewmodel или что-то в этом роде. Это действительно самая большая переменная, которую я нахожу в интерпретации шаблона. Некоторые люди думают, что «модели» - это объекты с ограниченным представлением, отправленные на представление. Другие считают, что «модели» - это богатые объекты домена, которые представляют собой бизнес-логику. Я в последнем лагере. – David

+0

@RobertHarvey: Нет конкретных примеров или проблем. И я не понимаю, как это просто «семантика»? Каждой модели представляется мне другой способ реализации. Если эти 4 различия являются семантическими различиями, то MVP и MVVM также являются просто семантическими различиями? – Evert

ответ

4

MVC это шаблон, который приспособлен к окружающей среде он используется в , как таковой нет «реального» шаблона MVC, а только шаблон MVC для использования в данной среде.

MVC был первоначально разработан в Smalltalk, но smalltalk - это уникальный язык, который предлагает объекты, недоступные на большинстве других языков.

wikipedia entry for MVC в значительной степени суммируется.

+0

Итак, факт, что существует несколько шаблонов, - это просто потому, что «исходный образец» никогда не был строго определен, и в разных областях развивались многочисленные школы мышления? – Evert

+0

@Evert - Нет, это было хорошо определено в документах, упомянутых в ссылке на Википедию. Но в разных средах требуется изменить его работу в этих ситуациях. –

+0

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

Смежные вопросы