modello di progettazione MVC. Sovraccarico di responsabilità del controllore

2

Sto sviluppando un'applicazione desktop con una GUI. Per fare ciò, sto utilizzando il modello di progettazione MVC per la parte della GUI. Per ora l'applicazione consiste in una singola finestra (vista) con un controller che interagisce con il backend (modello).

L'interazione diventa sempre più complessa giorno dopo giorno con il controller che acquisisce sempre più metodi per gestire gli input e aggiungere più dipendenze con gli oggetti del modello. Poiché è una buona pratica mantenere le classi e i metodi piccoli, mi sento di delegare alcuni compiti, è giusto? C'è un modo pulito per farlo?

Riguardo le dipendenze con il modello, sto usando un oggetto facciata, ma di nuovo mi sembra che si stia sovraccaricando.

    
posta DanTheMan 24.05.2014 - 13:51
fonte

2 risposte

1

Trasforma la tua domanda a testa in giù. Quando è una buona idea non delegare grandi funzionalità a un'altra classe? ....

Un po 'di no-brain non è vero? Posso solo pensare ad alcuni scenari in cui non vorrei delegare e ritengo che sia difficile / poco pratico farlo come un grande difetto di progettazione.

Come si fa, è una domanda molto più soggettiva.

In base alla tua domanda, esaminerei anche se un modulo fosse una buona idea. Controlli definiti dall'utente forse.

    
risposta data 24.05.2014 - 19:33
fonte
0

Ti suggerisco di utilizzare il pattern View Helper, è uno che preferisco (sto usando Spring WebMVC).

I metodi controller ricevono solo i parametri, costruiscono un parametro Data Transfer Object e lo passano in una classe ViewHelper. La classe ViewHelper restituisce un risultato DTO pronto per la visualizzazione di consumo.

ViewHelper può chiamare le classi di servizio necessarie utilizzando il parametro DTO in ingresso e costruire / aumentare il DTO di ritorno.

L'incapsulamento dei parametri / risultati in entrata e in uscita negli oggetti DTO consente di ridurre lo sforzo di mantenere il codice. Ad esempio, quando un nuovo requisito introduce un parametro aggiuntivo alla firma del metodo del controller, vengono interessati solo il controller, il DTO e il servizio interessato. Non è necessario "passare attraverso" questo nuovo parametro dal controller al DAO.

In breve, mantieni le lezioni del tuo controller in condizioni di illuminazione. Incapsula i dati in / out con DTO. Visualizza ViewHelpers per scaricare la complessità della raccolta dei dati dai tuoi servizi.

    
risposta data 24.05.2014 - 17:40
fonte

Leggi altre domande sui tag