Architettura per la mia applicazione Java [chiusa]

0

Cerco di creare piccoli strumenti Java per aiutarmi nel mio lavoro di tanto in tanto. Di solito questi non devono essere belli e mi ritrovo a scrivere una classe Java unica, a volte massiccia. Tuttavia, ora il mio piano è quello di creare uno strumento per me stesso che analizzi determinati file per me e crei il risultato desiderato. Mi piacerebbe che questo strumento avesse una GUI e mi piacerebbe usare Swing per questo. Tuttavia, non riesco a capire come concepire la mia applicazione: classi, pacchetti e simili.

Ho intenzione di avere una semplice GUI Swing con un selettore di file, l'applicazione crunch l'input (questa logica è abbastanza chiara per me), e restituire il riepilogo dei risultati nella GUI e chiedere all'utente di specificare un percorso di directory dove per salvare i file di output. Come dovrei separare la mia logica applicativa in classi separate? Sarei abbastanza felice se qualcuno potesse indicare un grande articolo o qualcosa del genere; cosa include solitamente la classe principale dell'applicazione, come deve essere separata la GUI dalla logica dell'applicazione e così via.

Non voglio più racchiudere tutto il mio codice in una singola classe, poiché non rende il mio codice scalabile né facile da mantenere.

    
posta treiman 27.03.2015 - 17:25
fonte

1 risposta

1

Quando si tratta di design, di solito è una buona idea avere un'idea di schemi di progettazione . Questo ti aiuterà a visualizzare meglio il modo migliore per strutturare la tua applicazione. Vale la pena notare, tuttavia, che è necessario scegliere gli schemi di progettazione in base a ciò che è necessario fare e non provare a forzare la progettazione a conformarsi a uno schema di progettazione specifico.

Per lo meno nel tuo caso, avrai bisogno di avere almeno 2 classi, una delle quali è il front-end Swing, e un'altra è il meccanismo di elaborazione / analisi. L'interfaccia utente è solitamente la classe principale e si occupa di avviare / caricare altri moduli.

L'esposizione di una serie di metodi (all'interno della classe UI) che facilitano la stampa dei dati per l'utente di solito aiuta anche, dal momento che la parte logica del programma (nel tuo caso, la seconda classe) non dovrebbe occuparsi di come dovrebbe essere reso il suo output. Ad esempio, potresti avere un metodo nella tua classe UI chiamato showResultToUser(String result) . Questo a sua volta utilizzerà i meccanismi appropriati per visualizzarlo in un significato completo per l'utente.

Se analizzerete più strutture di file, a mio parere potreste creare una classe separata per ogni tipo di file, questo vi aiuterà a mantenere il vostro codice segregato, rendendo così più facile cambiare un pezzo senza rompere il resto.

Inoltre, la separazione dell'interfaccia utente con la logica può rendere più semplice l'esecuzione della logica in thread separati. Non è mai consigliabile avere operazioni pesanti, come l'elaborazione dei file, le operazioni sul database, ecc. Sul thread dell'interfaccia utente (Event Dispatcher Thread). Avviare il meccanismo di analisi in un thread separato (e magari anche passare un riferimento alla classe UI, in modo che la logica possa fare qualcosa di particolare quando è finito) permetterebbe alla tua applicazione di rimanere reattiva.

    
risposta data 27.03.2015 - 17:36
fonte

Leggi altre domande sui tag