Ho intenzione di scrivere un'applicazione che legge i dati da un file csv e mostrare tali dati all'utente. Intendo applicare un modello di progettazione MVC per creare questa applicazione. Un utente interagirà con questa applicazione attraverso una console. Quindi la vista è una console.
Ci sarà un Main.java responsabile di:
- Presentazione di un menu che un utente può scegliere nella console.
- In grado di gestire l'evento nella console, ad es. un utente sceglie un'opzione per leggere due file csv e chiedere all'applicazione di visualizzare le differenze tra i due file csv.
- Esegui la logica aziendale appropriata per gli eventi selezionati.
Per fare ciò, Main.java avrà un metodo Main che visualizza il menu a un utente in una console.
Sto considerando di rendere Main.java un controller, perché questa classe è responsabile per prendere l'input dell'utente e capire cosa fare con l'input. Per fare ciò, Main.java chiamerà una classe chiamata FileService.java, che è una classe di servizio. FileService.java è responsabile di:
- Leggi un file CSV.
- Visualizza il contenuto del file di testo ordinato secondo alcune regole.
- Mostra il contenuto delle differenze di 2 file csv.
Il FileService analizzerà il file csv usando un parser csv e memorizzerà il contenuto dei file su un disco usando MapDB . L'intenzione di utilizzare MapDB è di consentire all'utente di leggere file di grandi dimensioni (ad es .: 5 GB) ed eseguire operazioni sul contenuto del file. Una volta letto il file, Main.java può visualizzare il contenuto del file o visualizzare le differenze tra i 2 file di testo, quando un utente seleziona l'opzione nella console.
Il FileService è concepito come parte del Modello in questa applicazione. E, il FileService è completamente disaccoppiato dalla vista e dal controller, che è il Main.java.
Questo semplice design raggiunge la separazione delle preoccupazioni indirizzate da MVC?
Risposta a @tgkprog:
dove si trova la vista? se main è il controller e FileService il modello / business part allora hai bisogno anche di una classe di visualizzazione.
Risposta : quando ho creato un'applicazione Web, una visualizzazione sarebbe, a titolo esemplificativo, una JSP o una pagina HTML. Nel contesto dell'applicazione di lettura file CSV, quale sarebbe l'equivalente di una pagina HTML o JSP? Questa è una cosa che non sono sicuro. Il menu visualizzato nella console può essere ottenuto semplicemente all'interno del metodo principale di Main.java.
se i file sono 5mb allora penso che un'app per console sarà abbastanza inadeguata per mostrare le differenze a meno che non ce ne siano pochissimi?
Risposta : potrei scaricare la differenza in un file di testo e consentire all'utente di visualizzare il file di testo. Questo sarebbe più utile per loro, penso. Grazie per avermelo segnalato.