2012-01-22 3 views
0

Я изучаю MVVM в курсе Брайана Лагунаса в PluralSight.Что такое MVVM, первый подход VIEW?

В начале он был сочинительство это два интерфейса:

public interface IView 
{ 
    IViewModel ViewModel {get;set;} 
} 

public interface IViewModel 
{ 
    IView View {get;set;} 
} 

Я учился в этом режиме, а затем он удаляется из ViewModel IView.

public interface IView {} 

Но я не вижу разницы в нем, возможно, есть преимущества и недостатки. Что-то не так, если я приведу первый пример?

ответ

6

Это, конечно, меньше контексте, чтобы оставить какие-либо полезные заявления, но на первый взгляд интерфейс

public interface IViewModel 
{ 
    IView View {get;set;} 
} 

кажется очень запутанным для меня, потому что основная идея картины MVVM является то, что ViewModel совершенно не знают представления. Если вы оснастите ViewModel ссылкой на View, это нарушает эту идею.

+1

согласен. этот интерфейс напоминает мне шаблон MVP –

+0

Итак, вы предназначаете этот контекст? интерфейс IView общественного { IViewModel ViewModel {получить; набор;}} общедоступный интерфейс IViewModel {} –

+1

"что ViewModel совершенно не знают о View" - _totally_ не всегда практично или строго необходимо. Такие вещи, как закрытие Windows и отображение всплывающих окон, становятся очень трудными, если вы следуете «чистым» путем. –

0

Ну, я не видел курс множественного числа, но я могу говорить вообще об управлении зависимостями. В исходной схеме у вас есть объект A, который знает об объектах B и B, которые знают об A. В этом смысле существует две степени связи: A зависит от B и B зависит от A. Хотя они зависят только от интерфейсов, которые является положительным, что зависимость все еще существует.

Удаляя одну из этих зависимостей, вы имеете сценарий, в котором A зависит от B, но B не зависит, заботится о нем или даже знает об A. В исходном сценарии, если вы вносите изменения в IView или IViewModel, API, это приведет к нарушению изменений. Во втором случае вы можете внести любые изменения, которые вы хотите в IViewModel, и они не повлияют на реализацию представления.

Это преимущество.

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

2

В соответствии с this blog:

  • Вид-первых: взгляд имеет отношение к его ViewModel (обычно посредством связывания данных).
  • ViewModel-First: ViewModel создает представление (обычно через контейнер IoC ).

В обоих этих методах он представляет собой липкость представления модели вида . Кроме того, обе из них подразумевают взаимно однозначное отношение, которое , в то время как общий случай, не всегда.

0

Я думаю, что это все об идее абстрактного вида через ViewModel; ViewModel предоставляет любое свойство, которое должно быть представлено в представлении, и те, которые может изменить вид [пользовательский ввод на практике] (подумайте о двусторонней привязке).Это механизм привязки , чтобы позаботиться о событии PropertyChanged, чтобы синхронизировать пользовательский интерфейс с ViewModel; таким образом ViewModel не должен ссылаться на View в использовании, он предоставляет любое представление (вы хотите использовать) некоторые свойства ...

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