Ho una situazione in cui ho tre requisiti:
- Inizializzazione pigra : non creare la raccolta finché non ti viene richiesta
- Memorizzazione nella cache : conserva la raccolta in memoria sull'oggetto
- Reinizializzazione : puoi reinizializzare la raccolta quando desideri, invece di ottenere semplicemente i risultati esistenti.
Questa è semplicemente un'ottimizzazione all'interno di una singola classe - non sta caricando nulla da un database e idealmente mi piacerebbe solo un buon modello di progettazione del metodo per questo, non un design multiplo.
Di solito per l'inizializzazione pigra avrei questo:
Collection getCollection() {
if (collection != null) {
// generate and set collection
}
return collection;
}
Ma ora ho problemi a decidere il modo migliore per fornire la reinizializzazione di una nuova collezione e ottenere quella collezione. Un parametro booleano fresh
funzionerebbe, ma l'aggiunta di un parametro a un getter non sembra avere senso (forse è Java in me che parla - potrei essere convinto).