Sobes.tech
Junior — Middle

Spiega le differenze tra i pattern Singleton e Prototype nel contesto della visibilità e dell'uso degli oggetti.

sobes.tech AI

Risposta dell'AI

Il pattern Singleton garantisce che nell'applicazione esista solo un'istanza di una classe, accessibile globalmente. La portata dell'oggetto è globale e tutti i client lavorano con lo stesso oggetto. È utile per gestire risorse condivise come configurazioni o pool di connessioni.

Il pattern Prototype prevede la creazione di nuovi oggetti clonando un prototipo esistente. Ogni chiamata crea una nuova istanza indipendente. La portata è locale per ogni oggetto creato, permettendo di avere molteplici oggetti simili ma indipendenti.

Esempio in Java:

// Singleton
public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

// Prototype
public class Prototype implements Cloneable {
    private int value;
    public Prototype(int value) { this.value = value; }
    public Prototype clone() throws CloneNotSupportedException {
        return (Prototype) super.clone();
    }
}

Pertanto, Singleton è un oggetto unico in tutta l'applicazione, Prototype sono molteplici oggetti creati a partire da un modello.