Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Lazy initialization - Teknopedia
Lazy initialization - Teknopedia
Niente fonti!
Questa voce o sezione sull'argomento programmazione non cita le fonti necessarie o quelle presenti sono insufficienti.

Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti.

Nella programmazione software, si dice lazy initialization (lett. "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

[modifica | modifica wikitesto]

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 la si richiede 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.

import java.util.*;
 
 public class Frutta {
     /**
      * Mappatura tra tipo di frutta (String) e la sua istanza (Frutta)
      */
     private static Map<String, Frutta> tipologie = new HashMap<String, Frutta>();

     /**
      * Contiene il tipo di Frutta dell'istanza corrente
      */
     private String tipo;      
 
     /** 
      * Costruttore privato per forzare l'uso del metodo factory.
      * @param   tipo Stringa che descrive il tipo di frutta da istanziare
      */
     private Frutta(String tipo){
         this.tipo=tipo;
         tipologie.put(tipo, this);
     }
 
     /**
      * Metodo Lazy con pattern Factory: recupera un'istanza di Frutta associata ad un certo tipo,
      * se presente, altrimenti istanzia un nuovo oggetto.
      * @param   tipo    Una stringa che descrive un tipo di frutta, ad esempio "mela"
      * @return          Una istanza di Frutta associata al tipo
      */
     public static Frutta getFrutta(String tipo) {
         Frutta f;
         if (tipologie.containsKey(tipo)){
             f = tipologie.get(tipo); // recupera l'istanza di quel tipo   
         } else {
             f = new Frutta(tipo); // inizializzazione lazy (pigra)
         }
         return f;
     }
 }

La tecnica può essere usata anche in un linguaggio non orientato agli oggetti.

Voci correlate

[modifica | modifica wikitesto]
  • Design pattern
  • anti-pattern
  • Design Patterns - libro
  • Singleton (informatica) - per un elegante esempio di impiego della lazy initialization
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Lazy_initialization&oldid=142087339"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022