In questo articolo parleremo del Design Pattern creazionale chiamato Singleton.

Cominciamo a vedere questo pattern che viene utilizzato quando dobbiamo riferirci ad un oggetto che deve essere unico e di cui non devono esistere altre istanze.

Il singleton definisce uno schema che ci permette appunto di fare in modo che esista un’ istanza prototipa e la possibilità di creare nuove istanze tramite la copia di questa.

Lo schema UML del Singleton
Lo schema UML del Singleton

Vediamo dunque come si implementa in Java:

public class Prova
{
	private static Prova instance; //1
	private Prova(){} //2
	
	public static Prova getInstance() //3
	{
		if(instance == null)
			instance = new Prova();
		return instance;
	}
}

 

Le cose importanti sono:

[fancy_numbers]

  1. Ci creiamo una istanza privata e statica della nostra classe,
  2. Rendiamo il costruttore privato in modo che non sia possibile fare new Prova(); all’ esterno della classe Prova,
  3. Creiamo un metodo pubblico e statico getInstance() che crea un’istanza di prova e la ritorna.

[/fancy_numbers]

Quando vorremo instanziare una oggetto di tipo Prova, dovremo fare:

Prova mioOggetto = Prova.getInstance();

Ed ogni volta che useremo Prova.getInstance() ci ritroveremo sempre la stessa istanza di Prova.