Правильная реализация архитектуры MVC - PullRequest
5 голосов
/ 18 апреля 2010

Я прочитал много статей об архитектуре MVC, но я все еще в замешательстве.

  • Какая диаграмма верна?
  • существует ли правильная реализация архитектуры MVC?
  • Могу ли я использовать другую реализацию архитектуры MVC?

Диаграмма 1

Диаграмма 1 http://img219.imageshack.us/img219/4576/screenshot20100418at213.png

Диаграмма 2

Диаграмма 2 http://img38.imageshack.us/img38/4576/screenshot20100418at213.png

Диаграмма 3

Диаграмма 3 http://img526.imageshack.us/img526/3900/screenshot20100418at214.png

Ответы [ 3 ]

8 голосов
/ 19 апреля 2010

MVC можно понять, подумав об обязанностях:

Представление не может изменять состояние модели напрямую - только через контроллер. Представление может иметь прямой доступ к модели, но только для просмотра (или с копией, не являющейся официальной моделью).

Модель должна жить в своей собственной вселенной и не иметь никаких ссылок на контроллеры или представления.

Контроллер контролирует состояние и доступ к модели.

1 голос
/ 19 апреля 2010

Определенно не Диаграмма 3! Диаграмма 1 в порядке. Я думаю, что лучше всего в основном Diagram 2 со стрелкой из контроллера для просмотра.

Предполагая, что вы спрашиваете в контексте веб-приложений, я думаю, что хороший поток MVC выглядит следующим образом:

  1. Когда приходит веб-запрос, это один из 2 типов.

    Тип A - это простой запрос, который напрямую отображается на представление, поэтому никакой контроллер не задействован

    Тип B - это запрос, который сопоставляется с контроллером

  2. Для типов A и B представление всегда считывает данные непосредственно из моделей

  3. Если это запрос типа B, контроллер считывает / обновляет модели и по завершении запрашивает инфраструктуру MVC вернуть представление клиенту. В представлении считываются обновленные модели и отображается клиент.

Этот подход поддерживается структурой Induction MVC .

Надеюсь, это поможет.

0 голосов
/ 18 апреля 2010

Моя стратегия для изучения хороших методов MVC состояла в том, чтобы найти кого-то, кто знал, и задавал много вопросов. Спросите нас, которые не знают ни ваших требований, ни ваших намерений, ни ваших идей, ничего хорошего.

По моему мнению, Диаграмма 1 будет считаться «лучшей» диаграммой, но, не зная вашей уникальной ситуации, было бы лучше объяснить ваши потребности кому-то еще, кто знает ваши требования и архитектуру MVC.

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