Singleton Pattern - Home Page Danilo Spada

Transcript

Singleton Pattern - Home Page Danilo Spada
Redatto da:
Di Luccio Eleonora
Rivisto da:
Ing. Danilo Spada
Singleton Pattern
Nella programmazione ad oggetti, il Singleton è uno dei
pattern fondamentali, definiti originariamente dalla gang of
four. Il Singleton è un design pattern creazionale, si applica in
tutte quelle situazioni in cui esiste la necessità di avere una
singola istanza di una determinata classe.
Gang of four
In ingegneria del software il termine inglese Gang of Four ("banda dei quattro"),
spesso abbreviato in GoF, è usato per riferirsi agli autori del libro “Design Patterns:
Elements of Reusable Object-Oriented Software” di Erich Gamma, Richard Helm, Ralph
Johnson e John Vlissides.
Gli autori del libro dichiarano di non essere a conoscenza di come si sia originato l'epiteto
gang of four. Il termine è forse un'allusione al gruppo di uomini politici cinesi noto come
banda dei quattro e suggerisce un parallelo tra l'influenza esercitata da questi ultimi
sulla storia cinese contemporanea e il notevole effetto prodotto sull'ingegneria del
software dal concetto di design pattern, che fu largamente popolarizzato dal libro.
Singleton Pattern
Un importante aspetto di questo pattern e' il modo in cui questa singola istanza viene
messa a disposizione di ogni oggetto che ne faccia richiesta. Dalla responsabilità del
programmatore si passa al comportamento di una classe: e' la classe stessa che garantisce
l'esistenza di una singola istanza.
Questo pattern viene implementato attraverso una sola classe.
Caratteristica principale e' l'uso di un costruttore privato (e' questo che garantisce la
singola istanza) e di un metodo publico e statico getIstance(). La singola istanza viene
mantenuta attraverso l'uso di una variable privata e statica istance.
1
Redatto da:
Di Luccio Eleonora
Rivisto da:
Ing. Danilo Spada
Ora un esempio di singleton scritto in Java:
public class Singleton{
private static Singleton instance=null;
private Singleton()
{
… inizializzazioni
}
public static Singleton getInstance()
{
if (instance==null)
{
instance=new Singleton();
}
return instance;
}
… Altri metodi
}
2
Redatto da:
Di Luccio Eleonora
Rivisto da:
Ing. Danilo Spada
Caratteristiche:
1) Un Singleton ha tutti i costruttori privati, infatti non deve essere possibile istanziarlo a
piacere.
2) Ha un attributo STATICO "a se stesso" (in realtá ad una singola istanza di se stesso).
3) Pubblica un metodo getInstance() che ritorna l'istanza (il reference instance).
Il metodo getInstance() ritorna SEMPRE un'istanza (l'unica) di Singleton, ma la crea solo la
prima volta che viene chiamato.
Esempio pratico
public class Singleton
{
private static Singleton istanza;
private Singleton()
{
}
public static Singleton getInstance()
{
if (istanza == null)
{
istanza = new Singleton();
}
}
}
return istanza;
public void helloWorld()
{
System.out.println("Hello World");
}
public class usaSingleton
{
public static void main(String args[])
{
Singleton.getInstance().helloWorld();
}
}
Se si vuole usare tale pattern per condividere una singola connessione ad un database si
può cablare l’istanza di Connection in un oggetto Singleton (verificando all’interno del
metodo getInstance() che la connessione sia ancora valida prima di tornarla ed in caso
contrario stabilirne una nuova). In questo modo si avrà la certezza che la connessione
stabilita è una sola e che sarà condivisa tra i vari threads. Naturalmente tale connessione
andrà usata mediante metodi synchronized!
3
Redatto da:
Di Luccio Eleonora
Rivisto da:
Ing. Danilo Spada
Indice:
Singleton Pattern.................................................................................................................................. 1
Gang of four......................................................................................................................................... 1
Singleton Pattern.................................................................................................................................. 1
Ora un esempio di singleton scritto in Java:.........................................................................................2
Indice:................................................................................................................................................... 4
4

Documenti analoghi

Sul pattern Singleton 1 Introduzione

Sul pattern Singleton 1 Introduzione • prevedere il metodo (pubblico) statico e cioè di classe, in modo che esso sia comunque visibile. Questo metodo deve istanziare un esemplare se ciò non è ancora accaduto, oppure restituire l’og...

Dettagli

Singleton - Tiziano Manni

Singleton - Tiziano Manni Il Singleton è implementato come una classe che ha un metodo statico (getInstance) che deve essere chiamato per restituire l’istanza del Singleton. L’oggetto Singleton verrà istanziato solo la prim...

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java Sommario

Programmazione Orientata agli Oggetti in Linguaggio Java Sommario unico e globale ðma questa scelta non deve essere frettolosa G. Mecca - Programmazione Orientata agli Oggetti

Dettagli