La Lazy initialization, ovvero inizializzazione pigra, è una tattica che prevede l’istanziazione un oggetto, inizializzazione di una variabile, lo svolgimento di un calcolo piuttosto che l’esecuzione di un processo esclusivamente nel momento in cui tale operazione è richiesta.
Lo scopo di questo pattern, è legato al miglioramento delle performance di un applicativo.
Come si può dedurre quindi, la Lazy initialization si rende applicabile nei seguenti casi:
ritardare un’operazione costosa fino a quando è assolutamente necessario svolgerla
memorizzare il risultato di operazioni complesse in modo da non doverle svolgerle nuovamente
Le immediate conseguenze dell’applicazione di questo pattern, sono quindi espresse dalla logica alla base del pattern stesso. Ottimizzare le operazioni costose, rendendole pigre e tenendo memorizzati i risultati dell’elaborazione ove fossero presenti.
Come ovvio il miglioramento delle performance che si ottiene applicando questo pattern (ove ce ne fosse), è strettamente legato alle caratteristiche del problema e a volte può non essere significativo. Come per ogni ottimizzazione, questa tecnica dovrebbe essere utilizzata solo se c’è un beneficio evidente.
Di solito, il pattern viene implementato memorizzando in un flag l’avvenimento di un determinato processo. Ogni volta che avviene un certo evento, si esamina il flag. Se il flag è settato a false, si continua, altrimenti si inizializza una certa variabile o si istanzia un certo oggetto.