In MVP, i presentatori dovrebbero istanziare e controllare altri presentatori?

7

Ho implementato un'applicazione che utilizza MVP con GWT, che funziona molto bene per le viste che hanno un unico scopo. Ora, si è evoluto in visualizzazioni che stanno raggiungendo più scopi in un'unica finestra. Così ora ho una vista delle viste con ogni vista che ha il proprio presentatore. Ho utilizzato questo esempio come modello per la creazione dell'applicazione, dai un'occhiata.

Anche la "vista delle viste" ha un proprio presentatore, che crea un'istanza (o riceve) i presentatori per ciascuna delle altre visualizzazioni di cui ha bisogno per realizzare il suo scopo. Rivelo le interfacce degli eventi attraverso quei presentatori affinché il presentatore di "view of views" si agganci e ascolti e reagisca a ciò che accade all'interno di quegli altri presentatori & viste.

Le mie domande sono:

  • Sto ancora seguendo i principi MVP o ho violato la separazione delle preoccupazioni da qualche parte con i relatori che creano / ricevono e controllano altri presentatori? aka Dovrei farlo?

  • Quali sono alcuni altri schemi di progettazione per la creazione di interfacce composte anche da altre interfacce complesse?

Aggiornamento

In risposta alla domanda di Robert Harvey, c'è una difficoltà con il passare oggetti da un presentatore di una vista al presentatore della "vista delle viste" quando viene attivato un evento. Ad esempio, un pulsante contrassegna un ClickEvent e il gestore associato a questo dovrà raccogliere l'oggetto dati relativo a ClickEvent tramite un altro metodo rivelato dal relatore della vista. Quindi funziona, ma sentiamo che causerà più problemi in seguito, dato che questo tipo di gestione degli oggetti cresce in complessità.

    
posta hulkmeister 07.02.2013 - 20:44
fonte

2 risposte

0

Per rendere più facile per il relatore al livello più basso interagire con le visualizzazioni di altri relatori, ho appena aggiunto un metodo all'interfaccia dei vari relatori per restituire la vista che stanno controllando. In questo modo posso collegare il mio presentatore al livello più basso agli eventi di quelle visualizzazioni.

Se qualcuno è in grado di segnalare eventuali problemi, questo causerà un ritardo, io sono tutto orecchie. Grazie!

    
risposta data 10.02.2013 - 04:06
fonte
0

Ci scusiamo per aver risposto a questo così tardi, ma qualcun altro potrebbe vederlo ....

Questo è un problema comune su Android e la solita soluzione è di avere le viste che implementano le interfacce di proprietà delle viste di chiamata.

Questo rende comunque un vero casino e rende davvero difficile sapere cosa sta succedendo.

Abbiamo risolto questo problema utilizzando il pattern Observer incorporato in un Bus (EventBus) dal quadrato.

I relatori si sono registrati per gli eventi e hanno detto le loro opinioni quando necessario, perché a volte avevano anche bisogno di fare altre cose (fare richieste di rete, memorizzare dati in db, ecc.).

    
risposta data 04.03.2015 - 08:42
fonte

Leggi altre domande sui tag