The Problem: Classi di attività molto grandi e contorte. Difficile da leggere/capire e modificare. Difficile da provare.Model-View-Presenter e Android Application Design
La possibile soluzione: Model-View-Presenter (forse con l'iniezione delle dipendenze). E Mock Test Objects!
Sto pianificando di implementare Model-View-Presenter nella mia applicazione Android. Questa è fondamentalmente una variante del Model-View-Controller. In sostanza, rendi l'attività un gestore di layout glorificato e rimandi qualsiasi logica aziendale al Presenter. Un altro modo di guardare il Presenter è che è come una classe Helper creata in un'Attività per eseguire il sollevamento con l'attività che fornisce un'interfaccia/callback che può essere utilizzata dal Presenter.
Mi piacerebbe avere alcune riflessioni della comunità su questo. Ad esempio: Quali interfacce sono implicite da questo?
Quali responsabilità avrebbero il modello e la vista rispetto al presentatore.
Per Presenter suppongo che l'Activity implementerà le interfacce necessarie per Presenter?
Quali tipi di cose dovrebbero andare in Presenter contro Attività?
Un presentatore sarebbe uno a uno con un'attività? Che dire di un'attività con più frammenti che visualizza diversi widget ciascuno con il proprio adattatore? Ora abbiamo bisogno di più relatori o ancora di uno solo?
Che dire di Presenter vs. Adapter?
Come dovrebbe relazionarsi un relatore per dire un'attività con ListView e ListViewAdapter? Cosa succede nel Presenter rispetto all'adattatore?
Il relatore deve scegliere l'adattatore da utilizzare? O l'attività dovrebbe prendere questa decisione? Il Presenter deve elaborare i dati del modello o l'adattatore? C'è un conflitto tra gli adattatori e i presentatori? Sono presentatori di adattatori? o qualcosa di meno/di più. Solitamente gli adattatori sono solo per widget come ListViews all'interno di un'attività. Non fanno le chiamate che ottengono i dati stessi, penso.
Quindi in modellista-presentatore la cosa fondamentale è davvero decidere cosa va nel presentatore rispetto alle altre classi e quale dovrebbe essere la comunicazione tra il presentatore e le attività, gli adattatori e le viste/inclusi i frammenti.
Model-View-Presenter è una pessima idea per Android? Oppure si adatta bene con Android Framework?
Ricorda che ci sono numerosi esempi al di fuori di Android di SDK molto maturi che necessitavano ancora di una micro-architettura come MVP. In effetti abbondano esempi: es. Flex era un SDK molto maturo per Flash e tuttavia necessitava ancora di framework MVP e MVC per quasi tutte le principali app.
EJB aveva bisogno di Spring per semplificarlo e organizzarlo. MFC/Struts ecc e l'elenco potrebbe continuare all'infinito. Perché Android dovrebbe essere diverso? Perché dovremmo supporre che l'SDK abbia tutto il necessario nel caso di Android senza uno schema di progettazione come MVP?
Bello sapere prima di spendere centinaia di ore su questo, non esitate a commentare/rispondere a qualsiasi parte di questa domanda.
Opinioni qualcuno? upvote? downvote? Commenti? risposte? .......... –
Vedi questo in aggiunta ... http://programmers.stackexchange.com/questions/133134/is-model-view-presenter-mvp-scheme-useful-for-android – nawfal