В MVC, почему модель должна уведомлять представления, и почему представление должно иметь модель? - PullRequest
1 голос
/ 05 августа 2011

В моем мире модель уведомляет только контроллеров, подписавшихся на событие модели. Затем контроллер сообщает представлению, что делать, например, добавляя новую строку в список.

То же самое с представлением: представление уведомляет контроллер, подписавшийся на событие представления. Затем контроллер изменяет модель по мере необходимости, например, устанавливает имя человека и вызывает метод Save () для модели.

Хорошо, я знаю, что я неправ, я не думаю, что каждая статья о MVC неправильна, потому что я думаю по-другому. Смысл MVC состоит в том, чтобы отделить пользовательский интерфейс от модели данных. Как это происходит, когда вид и модель достигают друг друга? Почему они должны это делать?

Спасибо за Ваш ответ!

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

Я полностью согласен с вами в этом.

Для каждого проекта, над которым я работаю, я стараюсь обеспечить следующее:

Вид -> Контроллер -> Модель

Чтобы каждое действие или событие в представлении вызывало определенный метод контроллера.Этот метод контроллера будет выполнять свою работу (проверять, вызывать другие службы и т. Д.), А затем, если требуется постоянство, он будет вызывать связанный ModelService для сохранения данных.

в моем мире компонент представления никогда не должен вызыватьModelService без прохождения через контроллер.

Но это только я ;-) (и почти 100% хороших архитекторов и дизайнеров, с которыми я работал)

1 голос
/ 06 августа 2011

Model-View-Controller многими людьми воспринимается по-разному, но мне нравится думать о нем как о комбинации нескольких других шаблонов, а не как об одном шаблоне. Это может исходить от этой заметки

Соединение вида с моделью - это шаблон наблюдателя, при котором модель уведомляет вид об изменении. Нет необходимости участвовать в этом контроллере.

0 голосов
/ 05 августа 2011

Мне нравится думать о модели как о прозрачной вещи, придерживающейся какой-то схемы.Очень легко «читается» видом.Я никогда не делаю свои взгляды программными, в том смысле, что вы можете вызывать на них все виды методов.Обычно мой взгляд - это HTML, моя модель имеет методы, но также может представлять себя в виде простой структуры данных, и есть промежуточное звено: в форме шаблонизатора.

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

...