Il concetto matematico di singleton è un insieme di numeri che contiene un solo numero. Gli ingegneri del software e i programmatori hanno tradotto questo concetto in qualcosa chiamato pattern singleton, in cui vari programmi accedono una sola volta a un insieme specifico di informazioni e contiene sempre lo stesso insieme di istruzioni o informazioni. Il pattern singleton viene utilizzato nei linguaggi di programmazione come Java per definire una variabile globale, un’informazione utilizzata in un intero sistema che rimane la stessa e deve essere definita solo una volta anziché molte volte.
Nella maggior parte dei linguaggi di programmazione, prima che un programma possa essere eseguito, richiede ulteriori informazioni sul suo ambiente. La maggior parte delle informazioni specifiche del programma è contenuta all’interno del proprio codice di programma; tuttavia, un programma spesso richiede anche informazioni variabili su cose come la versione del sistema operativo in cui è in esecuzione, l’hardware su cui viene eseguito e altre informazioni specifiche non esclusive del programma stesso. Di solito queste informazioni sono contenute in qualcosa chiamato classe o oggetto, che è un pezzo di codice di programmazione indipendente spesso contenuto in un file separato dal programma in modo che possa essere disponibile per molti programmi diversi contemporaneamente.
Se un linguaggio di programmazione non utilizza il pattern singleton, ogni programma che richiede informazioni contenute in un oggetto vi accede aprendo l’oggetto con un insieme di parametri che specificano di quali informazioni nell’oggetto necessita il programma. Pertanto, ogni volta che un programma diverso apre l’oggetto, viene creata un’istanza diversa dell’oggetto nella memoria del computer. Ogni istanza dell’oggetto può contenere informazioni diverse, a seconda delle esigenze specifiche di ciascun programma che lo apre.
Quando un linguaggio di programmazione che utilizza il pattern singleton, come Java, inizia a eseguire un programma, il programma cerca prima gli oggetti da cui ha bisogno di informazioni. Se un oggetto non è già aperto, apre l’oggetto senza parametri specifici, rendendo disponibili a tutti i programmi tutte le informazioni contenute nell’oggetto. Se l’oggetto è già aperto, legge semplicemente le informazioni nell’oggetto e continua. In questo modo, le informazioni contenute in un oggetto che utilizzano un pattern singleton sono sempre le stesse, quindi non è necessario aprire molte versioni differenti dell’oggetto contemporaneamente. Ciò consente di risparmiare spazio nella memoria del computer e può anche aumentare la velocità perché altri programmi possono accedere alle informazioni senza dover perdere tempo a creare una nuova versione dell’oggetto.