La risposta dipende dai dettagli che non sono menzionati nella domanda.
Dipenderà dai dettagli esatti di D1, D2, ..., A1, A2. Tale dettaglio potrebbe non valere la pena di essere menzionato nella tua domanda, perché renderà la domanda troppo localizzata, e pochi leggeranno tutti i dettagli. Può ancora aiutare a ottenere una risposta più personalizzata.
Se trovi la mia risposta troppo semplicistica, dovresti aggiungere ulteriori dettagli alla tua domanda.
Quanto codice può essere condiviso tra ogni tipo di gestore dati?
Dipende da quanto common esiste tra ogni tipo di dati. Per comunanza intendo la somiglianza nella struttura o sottostruttura.
Ad esempio, dato che
- Ogni
PersonContactInfo
contiene uno o più TelephoneContact
record.
- Ogni
BusinessDepartmentContactInfo
(anche) contiene uno o più TelephoneContact
record.
Quindi, se esiste un codice da scrivere per il record TelephoneContact
, può essere riutilizzato tra le due o più classi che lo utilizzano.
Per similarità nella struttura , ciò che intendo è la not somiglianza nei valori o la distribuzione statistica. Posso indirizzarti a un controesempio.
Il riutilizzo del codice è applicabile a tutti i paradigmi di programmazione. Alcuni paradigmi e linguaggi di programmazione hanno specifiche funzioni di sintassi e libreria per facilitare il riutilizzo del codice.
Scegliere un paradigma di programmazione per il tuo problema.
La decisione su quale paradigma di programmazione utilizzare dovrebbe venire dopo:
- Comprendi la dimensione dei dati (ordine di grandezza) che intendi gestire.
- Se è necessario gestire miliardi di dati, potrebbe essere necessario prendere in considerazione paradigmi alternativi, come progettazione orientata ai dati, database o elaborazione distribuita.
- Hai una struttura di base di quali funzionalità devono essere presenti nel software, ma senza entrare troppo nel dettaglio.
- Hai un schema / piano preliminare di come vuoi che il tuo software sia strutturato.
- Una tecnica molto utile è la "carta CRC", che sta per Classe, responsabilità e collaborazione . Può essere usato sia per la progettazione orientata agli oggetti che per quella non orientata agli oggetti.
- Hai identificato elementi comuni , come descritto sopra.
Decidere dove usare POD (semplice struttura dati obsoleta) o Oggetti.
Se hai deciso di utilizzare Java, si consiglia di utilizzare la progettazione orientata agli oggetti, come radarbob suggerito sopra , perché il vantaggio dell'uso di Java viene perso se non si sfrutta l'OOD.
Si presume che tu abbia completato il passaggio Class-Responsibility-Collaborations. Nella progettazione orientata agli oggetti, il risultato di CRC diventa il tuo progetto di classe Java iniziale.
Puoi apportare ulteriori modifiche al design della tua classe come meglio credi, come in refactoring .
Scrittura del codice per leggere i dati da un file e salvare i risultati in un file.
Ci sono molte scelte - così tante che è travolgente.
- Come minimo, è necessario implementare un lettore di dati per il formato del set di dati utilizzato da D1, D2, D3 e D4.
- Java supporta la serializzazione degli oggetti come parte della sua lingua.
- Tuttavia, se il codice sorgente della classe viene modificato, i dati precedentemente serializzati non possono più essere deserializzati: andranno persi.
- Poiché questo è un problema molto diffuso, ci sono molte soluzioni: (solo per citarne alcuni)
Inoltre, puoi prendere in considerazione i seguenti compromessi:
- Spazio efficiente: occupa il minor spazio possibile sul disco - spesso significa dati binari e non leggibili dall'utente.
- Leggibile dall'uomo - usa il testo il più possibile (XML o JSON), ma occupa più spazio su disco
- Leggibile dall'uomo combinato con compressione standard, come GZIP. Questo è un approccio equilibrato tra spazio e leggibilità.
Devo usare un database?
Purtroppo non ho molta esperienza con il database. Altre persone possono contribuire con idee.