2009-08-19 14 views
41

Recentemente ho lavorato a un progetto WPF .Net per creare un sistema di punti vendita al dettaglio in cui ho utilizzato per la prima volta lo schema MVP. Mi ci è voluto un po 'per avvolgere la mia mente attorno al cambio di approccio, ma una volta che l'ho fatto ho pensato che il concetto scuotesse!MVC/MVP/MVVM Che diamine?

La mia domanda è questa: qual è la distinzione tra MVC, MVP e MVVM? Se c'è una chiara distinzione, ci sono delle linee guida su quando dovresti usare uno schema piuttosto che un altro?

Se qualcuno può offrire una guida su questo, o indicare un articolo che spiega le differenze, lo apprezzerei molto.

+0

Come è possibile utilizzare MVP, se WPF è stato sviluppato con il pattern MVVM per impostazione predefinita come Silverlight? –

+1

possibile duplicato di [Che cosa sono MVP e MVC e qual è la differenza?] (Http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference) – Mast

risposta

3

Può essere difficile da Grok le differenze tra i modelli, cercando in un particolare modello implementato in un contesto particolare. Questo articolo di MSDN WPF MVVM fa riferimento a Martin Fowlers articoli originali che spiegano un modello come approccio generale:

Già nel 2004, Martin Fowler ha pubblicato un articolo su un modello di nome presentazione del modello (PM) [...] considerano MVVM è una specializzazione del modello PM più generale, su misura per le piattaforme WPF e Silverlight.

Quindi per capire i diversi modelli è utile osservare le descrizioni di diversi approcci di Martin Fowler. Il suo pattern Passive View è l'approccio MVP. Il suo pattern Supervising Controller è l'approccio MVC. Il suo modello Presentation Model è l'approccio MVVM. Questo older article prende l'evoluzione di tali modelli.

Può anche aiutare a esaminare le implementazioni in diverse lingue. L'articolo Implementing event-driven GUI patterns using the ZK Java AJAX framework mette in contrasto i tre modelli di Martin Fowler menzionati sopra in un moderno framework Java. Anche se è un linguaggio diverso e una struttura diversa da WPF, può aiutare a vedere il modello piuttosto che l'implementazione del modello per vederlo fatto in una lingua diversa.

Problemi correlati