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.