Lazy initialization: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Lazy initialization |
m →La lazy factory: Aggiunto il tasto "Copia" nel blocco di codice |
||
(39 versioni intermedie di 30 utenti non mostrate) | |||
Riga 1:
{{F|programmazione|febbraio 2013}}
Nella [[programmazione (informatica)|programmazione]] software, si dice '''
Tipico esempio è il [[flag]] indicante 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 instanzia un certo oggetto.▼
▲
==La "lazy factory"==▼
Dal punto di vista dei [[software design pattern]], la lazy initialization si usa spesso con un [[factory method pattern]]. Questo combina tre idee:▼
* usare un factory method per instanziare una classe ([[factory method pattern]]);▼
* 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 pattern]]);▼
* usare la lazy initialization per istanziare un oggetto la prima volta che è richiesto (lazy initialization pattern).▼
▲Dal punto di vista dei [[
▲* memorizzare l'istanza di una mappa, in modo tale da poter riprendere la
▲* usare la ''lazy initialization'' per istanziare un oggetto la prima volta che è richiesto
Un piccolo esempio (in [[Java
public class
/**
private static Map types = new HashMap(); ▼
* Mappatura tra tipo di frutta (String) e la sua istanza (Frutta)
private String type; ▼
*/
/**
* Contiene il tipo di Frutta dell'istanza corrente
*/
/**
* Costruttore privato per forzare l'uso del metodo factory.
private Fruit(String type){▼
* @param tipo Stringa che descrive il tipo di frutta da istanziare
this.type=type;▼
*/
types.put(type, this);▼
}
/**
* Metodo Lazy con pattern Factory:
* se presente, altrimenti istanzia un nuovo oggetto.
* @param
* @return
*/
public static
if (
f =
} else {
f = new
}
return f;
}
}</syntaxhighlight>
== Voci correlate ==
* [[Design pattern]]
* [[anti-pattern]]
* [[Design Patterns]] - libro
* [[Singleton (informatica)]] - per un elegante esempio di impiego della ''lazy initialization''
{{portale|informatica}}
[[Categoria:Design pattern]]
▲La tecnica può essere usata anche in un linguaggio non-[[object-oriented]].
|