Come ottenere la corretta dipendenza da MVP Android, tra Presenter, Dominio e Livello dati?

2

Sto cercando di capire meglio MVP Architecture su Android. Per fare ciò, voglio implementare MVP sul progetto Android dall'inizio.

Per prima cosa ho provato a utilizzare un modulo, che è app (Application Application), ma la mia app ha iniziato a crescere un po 'più velocemente di quanto mi aspettassi. E i test richiedono molto tempo per finire o mi danno un errore e mai passaggio. Penso di aver reso questa versione dell'app molto accoppiata.

La prossima cosa che ho provato a fare è usare 3 Modules Projects.

- app (modulo dell'applicazione)

- Livello dominio

- Livello dati

E ho iniziato a leggere per impostare la dipendenza, e penso di aver raggiunto un bivio.

Capisco che il livello del dominio, deve essere e dovrebbe essere indipendente.

Quindi, la dipendenza dovrebbe essere così App ---- > dipende da Domain Layer o Data Layer o entrambi? Livello dati ---- > dipende dal livello di dominio

    
posta Bokch 01.12.2017 - 14:50
fonte

1 risposta

2

Prima occupiamoci delle parti ovvie di MVP:

  • La vista è solo responsabile dell'interfaccia utente. Ottiene le sue informazioni dal Presenter e inoltra anche i suoi input. Pertanto, la vista dovrebbe dipendere solo dal Presenter. *

  • Il Presenter è lì per fornire dati all'interfaccia utente e per manipolare il modello in base all'input fornito dalla vista. Pertanto, deve dipendere dal Modello.

  • Il modello implementa la logica del tuo dominio e non dovrebbe dipendere da nient'altro (tranne la libreria standard e possibilmente alcune utilità personalizzate).

A chi appartiene l'accesso ai dati e come sono le sue dipendenze? Questo è qualcosa con cui il pattern MVP non si preoccupa veramente. Tuttavia, sono ancora valide le best practice standard.

Il livello del dominio non dovrebbe dipendere da nulla, incluso il livello di accesso ai dati. Il livello di accesso ai dati, d'altra parte, deve dipendere dal livello del dominio, dopotutto deve creare un oggetto dominio. Ci sono tre opzioni ragionevoli:

  • Il livello dominio gestisce l'accesso ai dati stesso, facendo affidamento sulle interfacce implementate dal livello di accesso ai dati.

  • Il livello di dominio non sa nulla sull'accesso ai dati, che viene gestito da Presenter. Questo va un po 'contro la filosofia di limitare il Presenter a connettere l'interfaccia utente con il modello, ma potrebbe comunque essere pratico in progetti più piccoli.

  • Si introduce un ulteriore livello API tra il relatore e la logica aziendale. Il relatore parla con il livello API, che ha riferimenti al livello di accesso ai dati. Idealmente, questo strato non dipende ancora dal DAL, ma dalle interfacce. Le istanze concrete del DAL vengono iniettate (vedi Iniezione delle dipendenze ).

* Punti bonus se fai in modo che entrambi dipendano da un ViewModel, senza alcuna dipendenza diretta tra la vista e il presentatore.

    
risposta data 01.12.2017 - 19:32
fonte

Leggi altre domande sui tag