Domanda

ho una buona idea di come ciascuno di questi modelli di lavoro e conoscere alcune delle piccole differenze tra loro, ma sono davvero così diversi gli uni dagli altri?

Mi sembra che il presentatore, presentazione del modello, ViewModel e controllore sono essenzialmente lo stesso concetto.

Perché non potrebbe che classificare tutti questi concetti come controller? Mi sento come potrebbe semplificare l'intera idea di un grande affare.

Qualcuno può dare una chiara descrizione delle loro differenze?

Ci tengo a precisare che io non capisco come il lavoro dei modelli, e hanno messo in atto la maggior parte di loro in una tecnologia o un altro. Quello che sto veramente cercando è l'esperienza di una persona con uno di questi modelli, e perché non prenderebbe in considerazione la loro ViewModel un controller per esempio.

ti darò alcuni punti reputazione per questo, ma sto cercando una buona risposta.

È stato utile?

Soluzione

Oltre alla grande già citato legge (Fowler & Miller) e di rispondere al vostro punto sulle differenze tra regolatore / presentatrice / ... dal punto di vista dello sviluppatore :

controller in MVC :

  • controller è il componente effettivo che viene chiamato come risultato di interazione con l'utente. (Sviluppatore non ha bisogno di scrivere il codice di delegare le chiamate verso il controller.)

  • Regolatore ottiene valori correnti in qualche modo dalla Vista / contesto / sacchetto / qualunque cosa, ma si sarebbe in realtà non dire che interagisce con la vista.

  • Regolatore decide, alla fine, quale vista per mostrare di nuovo all'utente. In questo, controller mostra un concetto esplicito di navigazione dell'applicazione del flusso di lavoro anche.

Presenter in MVP :

  • presentatore ha metodi chiamati dalla vista, che è l'effettivo controllo ricevente componente mediante interazione dell'utente. (Sviluppatore deve scrivere del codice in Vista al fine di chiamare il presentatore.)

  • Presenter ottiene valori correnti in qualche modo dalla vista o li ricevono dalla vista su convocazione. Presentatore chiama i metodi sulla vista al fine di impostare il suo stato ( popolarlo dice Josh Smith). A View metodo chiamato dal presentatore potrebbe avere diverse piccole impostazioni eseguite nel suo corpo.

  • Presenter non mostra in modo esplicito un concetto di flusso di lavoro dell'applicazione. Di solito è pensato come restituire il controllo al chiamante View.

PresentationModel in PM :

  • PresentationModel trovi metodi chiamati dalla vista, che è l'effettivo controllo ricevente componente mediante interazione dell'utente. (Sviluppatore deve scrivere del codice in Vista al fine di chiamare il PresentationModel.)

  • PresentationModel ha una molto più loquace di comunicazione con Vista rispetto a un presentatore. Esso contiene inoltre più logica al fine di capire il valore di tutte le impostazioni da applicare in vista, e in realtà impostare quelli della vista. (Quei Guarda metodi a turno hanno quasi alcuna logica.)

  • PresentationModel non mostra in modo esplicito un concetto di flusso di lavoro dell'applicazione. Di solito è pensato come restituire il controllo al chiamante View.

ViewModel in MVVM :

  • ViewModel ha metodi chiamati (e proprietà set) dalla vista, che è l'effettivo controllo ricevente componente mediante interazione dell'utente. (Sviluppatore deve scrivere del codice (dichiarativa) in vista, al fine di chiamare il ViewModel.)

  • ViewModel non ha una comunicazione esplicitamente loquace con Vista rispetto a PresentationModel (vale a dire non chiamare vista molto, il quadro lo fa). Ma ha un sacco di proprietà che mappa 1 a 1 con le impostazioni di visualizzazione. Esso contiene ancora la stessa logica di capire il valore di tutti tali impostazioni.

  • ViewModel non mostra in modo esplicito un concetto di flusso di lavoro dell'applicazione. Di solito è pensato come restituire il controllo al chiamante View.

  • Copia in qualche modo quello che dice Josh Smith ( http: // MSDN. microsoft.com/en-us/magazine/dd419663.aspx ): modello MVVM è un caso particolare di PM che si avvale di un quadro (come WPF / SL) al fine di scrivere meno codice.

Altri suggerimenti

Martin Fowler ha una pagina su modelli di progettazione dell'interfaccia utente, in cui si definisce e poi parla di MVC, MVP e altri modelli.

http://martinfowler.com/eaaDev/uiArchs.html

Un controller è attivo nel controllare l'interfaccia utente. Per esempio sarebbe gestire tutti gli eventi innescati da l'interfaccia utente e trattare con loro in modo appropriato.

Un Presenter d'altra parte è più passivo, e semplicemente visualizza i dati tramite l'interfaccia utente, che gestisce è propri eventi, ecc, o delegati attraverso il presentatore di un servizio o di comando.

ViewModel è un esempio specifico di un presentatore, progettato per l'uso con rilegatura WPF / Silverlight.

Un Presentazione del modello è un modello che può essere presentato direttamente dalla vista, così per esempio se i vostri modelli implementano INotifyPropertyChanged per l'associazione di dati, sarebbero Presentazione modelle.

La differenza tra loro è essenzialmente in quanto il codice è nella vista. La scelta tra loro è in realtà una scelta della tecnologia per applicazioni quali PAM, WinForms, ASP MVC (2). L'idea di base di separare la logica dalla presentazione è lo stesso.

Qui è molto buon articolo su tutti e tre.

EDIT:

Uno più articoli -. Confronto

Almeno in .Net, MVP viene utilizzato come modello di progettazione. Questo di solito è usato con le applicazioni Windows Forms, o ASP.Net classica. Con MVC, e MVVC, questi sono solitamente utilizzati con ASP MVC, che utilizza un'architettura piuttosto differente rispetto al normale ASP.Net.

A mio parere, non ci sono reali differenze concettuali tra MVP, MVVC, MVC e presentazione del modello. Ci sono alcune differenze di dettaglio, ma alla fine, tutto può continuare ad essere pensato come una configurazione Model View Controller. La denominazione più serve solo a creare confusione, e penso che sarebbe meglio adottare una terminologia che permette una certa quantità di latitudine nel descrivere un controllore.

Un importante distinzione solo tra MVP e MVVM è il modo in cui la vista non ha un ruolo attivo nell'aggiornamento strato intermedio, ed è un attore "muta" come vista dovrebbe essere per la visualizzazione, non il comportamento. Presenter è raccomandato per le viste che sono "complessi", cioè:.

  • Quando si prelevano click modificando attività ( “navigazione”) la sua più facile con Presenter
  • modificando vista cambia secondo aggiornamento strato di dati (asincrono) sarà attuato meglio con ViewModel

refs:

https://developer.android.com/topic/libraries / architettura / ciclo di vita # lc-bp

https: //android.jlelse .eu / why-to-scegliere-MVVM-over-mvp-android-architettura-33c0f2de5516 entrare descrizione dell'immagine qui

entrare descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top