Što je Singleton uzorak?

Matematički koncept singletona je skup brojeva koji sadrži samo jedan jedini broj. Softverski inženjeri i programeri preveli su ovaj koncept u nešto što se zove singleton uzorak, u kojem se određenom skupu informacija pristupa različitim programima samo jednom i uvijek sadrži isti skup uputa ili informacija. Uzorak singletona koristi se u programskim jezicima kao što je Java za definiranje globalne varijable, dijela informacija koji se koristi u cijelom sustavu koji ostaje isti i treba ga definirati samo jednom umjesto više puta.

U većini programskih jezika, prije nego što se program može pokrenuti, zahtijeva dodatne informacije o svom okruženju. Većina informacija specifičnih za program sadržana je unutar vlastitog programskog koda; međutim, program često također zahtijeva promjenjive informacije o stvarima kao što su verzija operacijskog sustava u kojem se izvodi, hardver na kojem se izvodi i druge specifične informacije koje nisu jedinstvene za sam program. Obično su te informacije sadržane u nečemu što se zove klasa ili objekt, što je neovisni dio programskog koda koji se često nalazi u datoteci odvojenoj od programa, tako da može biti dostupan mnogim različitim programima istovremeno.

Ako programski jezik ne koristi singleton uzorak, svaki program koji zahtijeva informacije sadržane u objektu pristupa mu otvaranjem objekta skupom parametara koji određuju koje su informacije u objektu potrebne programu. Stoga, svaki put kada drugi program otvori objekt, u memoriji računala stvara se druga instanca objekta. Svaka instanca objekta može sadržavati različite informacije, ovisno o specifičnim potrebama svakog programa koji ga otvara.

Kada programski jezik koji koristi singleton uzorak, kao što je Java, počne izvoditi program, program najprije traži objekte iz kojih mu trebaju informacije. Ako objekt već nije otvoren, otvara objekt bez ikakvih specifičnih parametara, čineći sve informacije sadržane u objektu dostupnim svim programima. Ako je objekt već otvoren, on jednostavno čita informacije u objektu i nastavlja. Na taj način, informacije sadržane u objektu koji koristi singleton uzorak uvijek su iste, tako da nema potrebe za otvaranjem više različitih verzija objekta istovremeno. To štedi prostor u memoriji računala, a također može povećati brzinu jer drugi programi mogu pristupiti informacijama bez trošenja vremena na stvaranje nove verzije objekta.