2012-08-09 28 views
14

Da quello che posso raccogliere, i primi due non sembrano così diversi. Che si chiami controller o presentatore, sembra che abbia le stesse funzioni di mediazione.Quali sono le differenze tra MVC, MVP e MVVM?

MVVM sembra un po 'diverso in quanto il controller sembra essere più di una parte del framework, ad esempio con i binding XAML.

Quali sono le spiegazioni di "Cliff's Notes" delle differenze?

+1

Glenn Block spiega molto chiaramente sul [qui] [1] [1]: http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what -is-the-difference/101561 # 101561 –

+1

In realtà non è chiaro, perché la sua descrizione MVC è solo una riformulazione di MVP. Quella descrizione, anche se fortemente potenziata, è sbagliata. È più che altro un tentativo di dimostrare che ASP.NET MVC implementa entrambi i pattern. –

risposta

13

La differenza sta nel modo in cui i dati del livello del modello finiscono nelle istanze di visualizzazione.

  • in classica vista MVC (e anche in Model2 MVC) è la struttura attiva. Richiede informazioni dal livello del modello. Il controller cambia solo lo stato del livello del modello e della vista.
  • in MVP la vista è passiva. Invece il presentatore richiede informazioni dal livello del modello e passa la vista. È possibile leggere più estesamente sul modello MVP here.
  • in MVVM è simile a MVP, ma il modello deve manipolare le informazioni prima di passarle alla vista.

La differenza tra MVP e MVVM è nel processo di sviluppo. Si utilizzerà il pattern MVP, quando si crea un livello di presentazione per un livello di modello noto.

Ma sarà necessario utilizzare MVVM, se si dispone di un'interfaccia utente preesistente (o per qualche motivo - non modificabile) e preesistente (o non modificabile) del livello del modello. E devi farli lavorare insieme. Ecco dove entra in gioco viewmodel.

+0

Come funziona Model2 in PHP? Controller-> Visualizza-> Livello del modello (le diverse sezioni richiedono interazioni diverse: barra laterale, navigazione)? – Stephane

+1

Ecco perché la vista corrente può utilizzare più modelli. Hai un modello per la navigazione, per la barra laterale, un altro per la lista dei documenti e così via. View acquisisce informazioni dal modello e, in base a tali informazioni, decide come visualizzare il risultato. Ho pensato che potresti essere interessato anche a esaminare lo schema HMVC. Si avvicina al problema da un angolo leggermente diverso. –

+0

Sembra che avere una vista più attiva significherebbe che se la mia vista volesse xml invece di json, sarebbe molto più semplice che dire che il mio controller lo gestisca. – Stephane

Problemi correlati