2011-01-20 4 views
6

Я читаю разницу между MVC, MVP, MVVMРазъяснение: MVC, MVP, MVVM

Источник: here

alt text

Мои сомнения, диаграммы (MVP) (MVVM) показать двунаправленная стрелка между Modle и Presenter, Model и ViewModel.

Презентатор и ViewModel, очевидно, осведомлены о модели. Но означает ли это, что модель знает о Presenter и ViewModel?

+0

в MVC pt 3 говорит, что представление не имеет никакого знания о контроллере. Pt 4 говорит, что представление имеет информацию о контроллере. Это противоречит. Pt 4 должен иметь представление о модели вместо этого. Pls подтверждает – NSN

ответ

7

Ведущий и ViewModel, очевидно, осведомлены о модели. Но означает ли это, что модель знает о Presenter и ViewModel?

Нет. По крайней мере, так, как я рассматриваю эти образцы, Модель должна (в идеале) не знать ничего, кроме самого себя. Я попытался выделить это в my discussion of MVVM, указав только однонаправленную стрелку к Модели.

Однако многие люди используют стрелку, идущую в обоих направлениях в/из Модели, чтобы представлять события, поднятые Моделью. Это зависит от того, как вы это видите: модели, вероятно, потребуется уведомить другие уровни изменений внутри себя. В зависимости от языка/рамки это может выглядеть как модель, «разговаривающая» с другими слоями. Тем не менее, я стараюсь быть очень осторожным, чтобы сохранить это полностью нейтральным с точки зрения модели. Например, в C# я просто использую событие, где все типы зависят от модели. Он знает, что «что-то» может слушать событие, но не имеет никакого знания того, что включает это «что-то».

+0

@ затем стрелка должна быть изменена на однонаправленную, верно? –

+0

@ ASP.netBeginner: см. Мою ссылку + мой последний (теперь отредактированный) абзац для деталей ... –

+0

@Reed Ничего себе, ваше обсуждение хорошее, как я пропустил такое хорошее обсуждение. Спасибо. Теперь все ясно. –