Tutorial che cos’è il pattern singleton

0
2081

Nell’ articolo di oggi vedremo cos’è un pattern e capiremo meglio cos’è il pattern singleton.

La parola pattern può essere tradotta in italiano in  modello, esempio,  motivo, schema, disegno, tipo, campione.

In ambito informatico quando si parla di pattern  si intende un modello da seguire per dare  una soluzione standard in un problema ricorrente. Detto in maniera ancora più semplice: sono delle soluzioni proposte a problemi che spesso dobbiamo affrontare nella programmazione. Uno dei libri fondamentale in tale ambito è il Design Pattern della Gang of Four dove gli autori definiscono 23 tipi di Design Pattern, suddividendoli in 3 categorie: strutturali (riuso di oggetti  adattandoli a le nuove esigenze), creazionali (utilizzo dei metodi senza conoscere la classe) e comportamentali ( interazione tra le varie classi).

La struttura di un design  pattern  può essere definita in due parti : la definizione di un problema e la soluzione di tale problema.

Che cos’è il pattern singleton?

Il pattern singleton è uno dei pattern più semplici da capire ed implementare per alcuni versi alcuni lo definiscono un anti-pattern.

Problema: voglio che una determinata classe abbia una sua sola istanza e se non c’è venga istanziata fornendo un unico punto di accesso.

Soluzione: rendo il costruttore di tale classe privato  creo un metodo get del costruttore  pubblico dove controllo se tale istanza esiste; se non esiste la creo altrimenti ritorno quella già esistente.
Qui sotto riporto un esempio in Java:

public class Singleton{
private static Singleton istanza = null;
// Definiamo il costruttore in modalità private così impediamo l’istanza di oggetti da parte di classi esterne
private Singleton() {}
// Definiamo metodo in modalità public per accedere alla classe anche da classi esterne e centralizandolo quindi in questo punto
public static synchronized Singleton getSingleton() {
// Verifico se è già stata creata un istanza e in caso negativo la creo
if (istanza == null)
istanza = new Singleton();
return istanza;
}
}

Esaminiamo ora in dettaglio il codice passo dopo passo:

1) Creo la mia classe di cui vogliamo solo una sola istanza (Singleton)

2) Inizializzo la mia variabile di istanza della classe a null

3) Definiamo il costruttore della classe in modalità private così impediamo l’istanza di oggetti da parte di classi esterne

4) Definiamo metodo in modalità public per far accedere alla classe anche da classi esterne centralizando così la chiamata in questo punto

5) In tale metodo verifico se è già stata creata un istanza e in caso negativo la creo altrimenti restituisco l’istanza precedentemente creata