Singleton Design Pattern

Singleton Design Pattern

Lo scopo del Design Pattern singleton è assicurare che una classe abbia un’unica istanza, avendo cura che vi sia un unico accesso globale.

Motivazione: quando tutti gli oggetti devono accedere ad un unico punto (file system, database, windows manager) è bene che la classe che permette la comunicazione sia una e una soltanto

Una classe singleton ha gli attributi privati, il costruttore della classe privato e un metodo pubblico statico che ritorna

un oggetto della classe.

Esempio:

class Singleton {
private static Singleton oggettosingleton; // attributo privato static di tipo Singleton
int x;
private Singleton(){ } //costruttore della classe privato non accessibile dall’esterno
public static Singleton instance() //metodo statico che crea gli oggetti della classe Singleton
{
If (oggettosingleton = nul) //verifico che l’oggetto non sia mai stato creato
{
oggettosingleton = new Singleton(); //se non esiste né creo uno altrimenti restituisco quello già creato
}
return oggettosingleton; //restituisco l’oggetto, se
}
public void f(){} //metodi pubblici della classe
public void g(){}
}

Per avere l’oggetto non posso chiamare il costruttore ma devo utilizzare la seguente metodo:
Singleton a1 = Singleton.instance();

Un altro modo per realizzare una classe Singleton è , creare l’oggetto al momento della inizializzazione degli attributi statici

class Singleton {
private static Singleton oggettosingleton = new Singleton();
// attributo privato static di tipo Singleton, creo l’oggetto al momento della inizializzazione degli attributi statici
int x;
private Singleton(){ } //costruttore della classe privato non accessibile dall’esterno
public static Singleton instance() //metodo statico che crea gli oggetti della classe Singleton
{
return oggettosingleton; //restituisco l’oggetto, se
}
public void f(){} //metodi pubblici della classe
public void g(){}
}