Cos'è il modello Singleton?
Il concetto matematico di un singleton è un insieme di numeri che contiene solo un singolo numero. Gli ingegneri del software e i programmatori hanno tradotto questo concetto in qualcosa chiamato un modello singleton, in cui un insieme specifico di informazioni è accessibile da vari programmi una sola volta e contiene sempre lo stesso insieme di istruzioni o informazioni. Il modello singleton viene utilizzato in linguaggi di programmazione come Java per definire una variabile globale, un'informazione utilizzata in un intero sistema che rimane invariata e deve essere definita una sola 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 nel 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 univoche per il programma stesso. Di solito queste informazioni sono contenute in qualcosa chiamato classe o oggetto, che è un pezzo indipendente di codice di programmazione spesso contenuto in un file separato dal programma in modo che possa essere disponibile contemporaneamente per molti programmi diversi.
Se un linguaggio di programmazione non utilizza il modello singleton, ogni programma che richiede informazioni contenute in un oggetto vi accede aprendo l'oggetto con una serie di parametri che specificano quali informazioni nell'oggetto sono necessarie al programma. Pertanto, ogni volta che un programma diverso apre l'oggetto, viene creata una diversa istanza 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 modello singleton, come Java, inizia a eseguire un programma, il programma cerca innanzitutto gli oggetti da cui necessita di informazioni. Se un oggetto non è già aperto, apre l'oggetto senza parametri specifici, rendendo tutte le informazioni contenute nell'oggetto disponibili per tutti i programmi. Se l'oggetto è già aperto, legge semplicemente le informazioni nell'oggetto e continua. In questo modo, le informazioni contenute in un oggetto utilizzando un modello singleton sono sempre le stesse, quindi non è necessario aprire contemporaneamente diverse versioni dell'oggetto. Ciò consente di risparmiare spazio nella memoria del computer e può anche aumentare la velocità poiché altri programmi possono accedere alle informazioni senza dover dedicare tempo alla creazione di una nuova versione dell'oggetto.