2013-03-23 11 views
14

Sto cercando di capire se c'è una differenza tra i modelli Model-View-Presenter e Model-View-Adapter e, in tal caso, qual è la differenza. Non ho trovato alcuna risorsa online che li confronta/contrappone, quindi non sono nemmeno sicuro se siano effettivamente distinti.Qual è la differenza tra Model-View-Presenter e Model-View-Adapter?

Le descrizioni che ho trovato su di loro suonano essenzialmente identiche a me. Da quello che ho raccolto, in entrambi i casi il flusso di controllo è fondamentalmente:

View <-- Adapter/Presenter --> Model 
(where Adapter/Presenter can also respond to events from View and Model) 

View: the UI 
Adapter/Presenter: main logic; mediator between the UI and the data model 
Model: the data model 

L'adattatore/Presenter "sa di" la View e il modello, ma la vista e il modello non conoscono nessun altro di loro stessi.

Mi aspetto che ci sia una sottigliezza che mi manca completamente qui. Che cos'è?

risposta

10

L'unica cosa che posso pensare è che MVA è generalmente associato ad avere più adattatori tra una vista e un modello. Mentre non c'è nulla che ti impedisca di farlo in MVP, penso che MVP implichi una forte triade.

Aggiornamento (anni dopo): a posteriori, credo che una differenza fondamentale sarebbe il flusso di controllo. In MVP, la vista attiva/crea/chiama il relatore, che delega al modello e risponde alla vista. In MVA, quando arrivano i messaggi, viene scelto un adattatore, che quindi media tra il modello e la vista. Poiché la vista MVP attiva/crea/chiama il Presenter, la scelta tra più Presentatori (come viene scelto un Adattatore) non è una soluzione semplice.

+1

In altre parole, in MVP, la vista è a conoscenza del presentatore ed è la parte attiva che osserva e delega gli eventi al presentatore. In MVA, la vista non è a conoscenza dell'adattatore, ma il contrario e l'adattatore è la parte attiva che osserva gli eventi della vista. – hidro

Problemi correlati