title: Lazy initialization
text: # Lazy initialization
  
  Nella programmazione software, si dice Lazy initialization (inizializzazione pigra) la tattica di istanziare un oggetto, inizializzare una variabile, effettuare un calcolo o eseguire un processo solo nel momento in cui tale operazione è richiesta.
  
  Tipicamente, questo si ottiene memorizzando in un flag l'avvenimento di un determinato processo. Ogni volta che avviene un certo evento, si esamina il flag. Se questo è abbassato, si continua, altrimenti si inizializza una certa variabile o si istanzia un certo oggetto.
  
  ## La "lazy factory"
  
  Dal punto di vista dei design pattern, la lazy initialization si usa spesso con un factory method. Questo combina tre idee:
  
  * usare un factory method per instanziare una classe;
  * memorizzare l'istanza di una mappa, in modo tale da poter riprendere la stessa istanza la volta successiva che si richiede la stessa con certi parametri (confronta con un singleton);
  * usare la lazy initialization per istanziare un oggetto la prima volta che è richiesto.
  
  Un piccolo esempio (in Java): la classe Frutta viene impiegata a soli fini esemplificativi per mostrare questo pattern di inizializzazione.
  
  La tecnica può essere usata anche in un linguaggio non-object-oriented.
  
  