Come funziona un singleton
Tutto e' scritto in modo da non permettervi di instanziare piu' di un oggetto
SingleCounter
.A questo oggetto potete accedere solo usando il
metodo instance
che ritorna il suo indirizzo.
Notate che la classe SingleCounter
e' dichiarata final
per cui non la potete estendere e magari aggiungervi i vostri costruttori.
Il costruttore predefinito SingleCounter()
viene dichiarato
private
cio' che vi impedisce di creare altre istanze.
Questo metodo e' anche static
cosi' esso puo' subito,
quando inizia l'esecuzione del programma creare l'unica copia del
singleton e renderla disponibile al metodo statico instance
.
Notate che getValue
non e' statico, per cui non potete
accedere ad esso usando la sintassi: Singlecounter.getValue()
:
dovete necessariamente accedere ad esso scrivendo:
SingleCounter pippo=SingleCounter.instance(); pippo.getValue();
o anche SingleCounter.instance().getValue();
Lo stesso vale per il metodo increment
.
Questo esempio spiega anche come mai per accedere a certi oggetti in Java,
non si usa la solita tecnica di instanziare l'oggetto con new
e poi accedervi, ma si usa la chiamata a un metodo statico della stessa
classe.Questo succede tutte le volte che la creazione dei nuovi oggetti
deve seguire certe regole (come il fatto che ci sia un unico oggetto).
Una maniera analoga di raggiungere lo stesso scopo e' quella di permettere
la creazione di un oggetto solo attraverso la chiamata di un particolare metodo
di un'altra classe.Ad esempio la creazione di un oggetto Image
in
un applet viene fatta richiamando il metodo createImage()
dello stesso applet.