Ho i seguenti requisiti:
- Carica i dati da una varietà di fonti e riempi un elenco con esso
- Utilizza una serie di dati per eseguire alcuni calcoli
Alcune informazioni aggiuntive:
- L'algoritmo per il calcolo si aspetta che l'elenco dei dati sia ordinato da una chiave fornita con i dati.
- Voglio usare una coda invece di una lista all'interno dell'algoritmo per motivi di prestazioni (i dati caricati sono già memorizzati ordinati)
- Il batch di dati deve essere caricato in anticipo
Ho provato a suddividere i requisiti in classi diverse e ho trovato questo design (pseudocodice):
class Data {
int key;
// some more data fields
}
class SortedDataQueue{
Data peek();
Data dequeue();
void enqueue(Data);
}
class ComputesData {
Result performComputation();
void setDataBatch(SortedDataQueue dataBatch);
}
class DataLoader {
static SortedDataQueue loadFromJsonFile(File file);
static SortedDataQueue loadFromDB(DataDAO dao);
}
È un buon design?
Cerco di migliorare l'architettura / design del software, ma è davvero difficile senza che qualcuno abbia esperienza nel rivedere il tuo lavoro. Ho provato a seguire i principi SOLID in questo.