Dopo un argomento irrisolto con un amico, ho deciso di chiedere alla comunità di overflow dello stack. C'è qualcosa come astrarre troppo il tuo codice? Quale dei seguenti è l'opzione migliore. Veniamo da linguaggi di programmazione diversi, quindi lo spiegherò nello stesso modo in cui lo farei a lui. Assumi tutto quanto sotto come riepiloghi a quello che faranno le tue rispettive lingue.
CONDIZIONI IMPORTANTI CHE SARANNO SEMPRE ESISTENTI:
- C'è solo 1 tabella e 1 db
- Ci sarà solo un GET_ALL. Nessuna raccolta parziale o specifica.
- FACTORY CLASS e HELPER CLASS saranno sempre chiamati insieme NESSUNA QUESTIONE.
FACTORY CLASS {
//This method will check cache and create a repository instance of the table if one does not exist
createNewRepository();
//This will collect the records from the instantiated repository
getAllFromRepository();
//This will return the data that was collected
returnData;
}
o
FACTORY CLASS {
//This method will check cache and create a repository instance of the table if one does not exist
createNewRepository();
}
HELPER CLASS {
//This will collect the records from the instantiated repository
getAllFromRepository();
//This will return the data that was collected
returnData;
}
Entrambi abbiamo visioni diverse sui principi SOLID a quanto pare.
Credo che una classe dovrebbe avere un'unica responsabilità nel senso di "La responsabilità di questa classe di fabbrica è quella di ottenere i dati dal db" che includerà la funzionalità richiesta per raggiungere questo obiettivo.
Crede che una classe debba avere un'unica responsabilità nel senso che la responsabilità di "Questa classe industriale" è quella di far ruotare il repository e non di chiamare i dati. Una classe helper chiamerà i dati "
Sono d'accordo con lui se si verificassero diverse varianti del modo in cui i dati vengono chiamati ma perché i dati saranno sempre controllati > createdIfNull > raccolti e l'intero processo è la funzionalità di "accesso ai dati da utilizzare" non dovrebbe essere in una singola classe?