Какой вкус MVC является более распространенным? - PullRequest
1 голос
/ 30 июня 2010

Я замечаю 2 разных «вкуса» MVC:

1) «Оригинальный» MVC, где Модель общается напрямую с View 2) «Apple Cocoa» MVC, где Контроллер использует шаблон Mediator и Модель иПредставление никогда не связывается напрямую

Из текста ссылки :

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

Это имеет для меня большой смысл.Однако с # 1, как показано в википедии, у вас есть связь между Model и View, и поэтому они кажутся мне довольно связанными.Кажется, что «оригинальный» MVC не решает своей цели.

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

Это хорошо для меня, потому что я работаю в Какао, который "верит в" # 2, и я работаю в простом C ++, в который я могу поверить во что угодно.Но какой из этих ароматов MVC я узнаю в дикой природе?Например, Ruby on Rails, Struts, PureMVC ... они "используют MVC", но я бы ожидал увидеть там # 1 или # 2?

EDIT: Похоже, # 2 - этоболее приемлемый, так что любой современный подход использует # 1, если так, то что?

Ответы [ 2 ]

1 голос
/ 30 июня 2010

В asp.net Mvc используется подход №2: контроллер читает и записывает данные из / в модель, отправляет и получает данные в / из представлений.Представления и модели никогда не говорят напрямую.

1 голос
/ 30 июня 2010

Я не уверен, что является более общепринятым, но большинство людей видит Rails как «спецификацию» для MVC, а в Rails модель и представление никогда (почти никогда) не говорят напрямую. Контроллер выполняет поиск и отправку данных модели в представление.

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