Un presentatore o una vista devono ordinare i dati in un'applicazione MVP?

5

Una tipica applicazione MVP potrebbe avere un metodo di visualizzazione come:

void setDisplayItems(List<DisplayItem> items);

Il relatore dovrebbe ordinare l'elenco di elementi o è un'attività per la vista?

Ritengo che questo potrebbe essere un compito per la vista, per due motivi:

  1. Se era un compito per Presenter, allora metodi come:

    void addDisplayItem(DisplayItem item);
    

    non funzionerà, in quanto il Presenter non può inserire l'elemento nel posto corretto.

  2. La vista può offrire diverse opzioni di ordinamento, in base alle selezioni dell'utente.

Tuttavia, non riesco a scuotere la sensazione che questo sia troppo "pensare" per la Vista da fare. Qualcuno può commentare la scelta corretta per MVP?

Devo notare che di solito produco applicazioni Java basate su Swing (nel caso in cui sia possibile ottenere risposte più specifiche).

    
posta Duncan Jones 26.03.2013 - 16:37
fonte

2 risposte

4

La risposta corretta è (rullo di tamburi per favore) dipende. Stai usando un framework UI che supporta l'ordinamento in modo nativo? Stai ordinando su una sequenza di grandi dimensioni che sarebbe meglio eseguire come operazione di database? La struttura dell'interfaccia utente supporta l'ordinamento tramite il database (ad esempio, supporto IQueryable in molti toolkit di interfaccia utente .NET).

Esistono diversi approcci a MVP . Hai la Vista passiva in cui il Presentatore ha una profonda conoscenza della vista tramite un'interfaccia, c'è controller di supervisione in cui il relatore gestisce la complessa logica di visualizzazione e il resto è lasciato alla vista (quindi di nuovo se gli oggetti della vista possono gestire l'ordinamento, lasciali fallo se non è un'operazione costosa), infine è il Modello di presentazione che è praticamente equivalente a MVVM in cui il Presenter espone il comportamento come proprietà e la vista reagisce a quelle proprietà.

    
risposta data 26.03.2013 - 21:59
fonte
7

Vorrei inserire una logica come questa nel Presenter. Uno dei compiti importanti del Presenter è quello di mettere i dati nella forma corretta per la tua vista. In questo modo sarà più facile scambiare le visualizzazioni in futuro.

In generale, dovresti cercare di evitare di inserire molte, se non nessuna, logica nella tua vista. L'unica cosa a tuo avviso dovrebbe essere il codice di visualizzazione visiva e il codice di base per la visualizzazione dei dati preparati dal relatore.

    
risposta data 26.03.2013 - 16:42
fonte

Leggi altre domande sui tag