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 classeDatabaseche 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 fineDatabasediventerà molto grande. -
Crea una classe separata
JobHandlercon il costruttorepublic JobHandler(Database d)che accetta un database. In questoJobHandlerho intenzione di fornireaddJob(Job j). Il mio problema è qui, su quale livello dovrei interagire conDatabasepoiché 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
Databaseed 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.