Attualmente sto sviluppando un'applicazione java, che comunica con un server SQL. Pertanto ho creato la classe Database
che è responsabile per open()
e close()
.
Voglio poter aggiungere dati al database. In questo esempio, la tabella viene chiamata job. Pertanto ho creato una classe Job
. Oltre a questi lavori, ci saranno (molte) cose diverse, che saranno archiviate nel database. La mia domanda è: dove inserisco il mio metodo addJob(Job j)
? Finora, posso pensare a tre possibili soluzioni:
-
Aggiungi il metodo
addJob(Job j)
alla classeDatabase
che fornisce l'astrazione per il resto del programma. Il resto del programma non deve preoccuparsi di come questo è implementato. Lo svantaggio di questo è che alla fineDatabase
diventerà molto grande. -
Crea una classe separata
JobHandler
con il costruttorepublic JobHandler(Database d)
che accetta un database. In questoJobHandler
ho intenzione di fornireaddJob(Job j)
. Il mio problema è qui, su quale livello dovrei interagire conDatabase
poiché attualmente non ci sono metodi pubblici tranneopen()
eclose()
. Devo creare un metodo che accetti le istruzioni pure sql? Questo non mi sembra molto buono. -
Rendi astratta la classe
Database
ed estendila in modo da implementare qui i metodi mancanti. Il lato negativo è che non posso passare il database e utilizzare la stessa connessione per più query di diverso tipo.
Cosa si potrebbe fare per risolvere questo problema? Come dovrei strutturare le mie classi in modo che non diventino troppo grandi e anche non troppo della classe del database deve essere esposta alle classi che implementano i metodi per trattare i dati?
Modifica Si noti che quel lavoro è una classe casuale, che dovrebbe servire solo come esempio per i dati che sono memorizzati nel database.