2014-07-24 11 views
7

Voglio implementare la mia prossima applicazione con pattern MVP, quindi ho iniziato a leggere alcuni articoli su come dovrebbe essere implementato. Il problema principale per me è che ci sono diversi approcci a questo modello. Alcuni dicono che dovremmo trattare l'attività come una visione, ma alcuni altri che l'attività dovrebbe essere un presentatore.MVP Android: un'attività deve essere una visualizzazione o un relatore?

L'attività come una vista è descritta qui: MVP Android e ha senso. Ma d'altra parte ho trovato questa risposta con qualche upvotes https://stackoverflow.com/a/7609943 e qualcuno dice che l'attività dovrebbe essere un presentatore.

Qualcuno ha un'esperienza con questo modello?

risposta

2

Penso che sia sicuro considerare Activity come Presenter. La vista può essere considerata come il file XML di layout. Il presentatore è qualcosa che ha una connessione diretta al/ai Modello/i così come View (s) come detto nella risposta che hai postato sopra. In un'attività, ci si connette alla vista (s), e rimane come intermediario tra la vista (s) e il (i) modello (i), che è effettivamente la funzionalità del presentatore. Prende gli eventi di input dalla (e) Vista (e) e imposta i valori ricevuti dal (i) Modello (i) da visualizzare nella (e) Vista (i).

+2

View non suggerisce sottostante dettagli di implementazione. Una vista è solo un'astrazione che può essere implementata in molti modi (una vista GWT, una vista finta, una vista basata su Android).Penso davvero che un'attività in Android sia più vicina alla vista, perché l'attività tende a conoscere i dettagli dell'implementazione (XML di layout sottostante, ecc.). Nei test unitari, avere il Presenter come un'attività, ti lega strettamente all'ambiente Android mentre un presentatore agnostico a livello di vista separato offre molta più flessibilità (puoi facilmente testare i tuoi presentatori usando 'mvn test' in questo modo). –

+0

Quindi cosa proponi come presentatore? –

+1

Come ho detto sopra, il presentatore dovrebbe essere un intermediario indipendente dal livello di vista. Ad esempio, può essere una semplice classe che fa riferimento a un modello e una vista tramite interfacce nel suo caso più semplice e può dettare l'interazione e il flusso di lavoro tra il modello e la vista. Supponiamo di avere un presentatore che può essere facilmente riutilizzato per diversi ambienti: Android, GWT, ecc. –

8

Dopo un momento penso che l'attività dovrebbe essere considerata come una vista. Se separiamo la logica aziendale dall'attività, sarà facile sostituire l'attività con un frammento o una vista. Saremo anche in grado di prendere i nostri modelli e presentatori e usarli in applicazioni desktop, aggiungendo solo nuove visualizzazioni. È anche meglio per scopi di test creare un presentatore come un oggetto normale, non un'attività.

7

L'attività è molto vicina al layout, quindi dovrebbe essere una vista. E la tua logica di business dovrebbe essere nel Presenter creato dalla tua attività. Per capire di più su MVP dare un'occhiata a - MVP for android

enter image description here

0

Il termine View è sovraccarico qui, vista Android è diverso da quello della vista dovrebbe essere usato nel pattern MVP. View è un'interfaccia che dovrebbe essere implementata dall'attività/frammento. Puoi dare un'occhiata a Official Android MVP Examples.

Suggerirò di avviarlo dallo basic one. Ecco un flusso dalla pagina.

enter image description here

+0

a causa dei documenti che si riferiscono "In questa versione dell'app, l'attività è il controller generale che crea e connette visualizzazioni e relatori ". – YTerle