Obsah:
Definícia - Čo znamená Singleton?
Singleton je trieda, ktorá umožňuje vytvorenie iba jednej inštancie a umožňuje prístup k tejto vytvorenej inštancii. Obsahuje statické premenné, ktoré môžu obslúžiť jedinečné a súkromné prípady samy o sebe. Používa sa v scenároch, keď chce užívateľ obmedziť instanciu triedy iba na jeden objekt. Toto je užitočné, keď je potrebný jeden objekt na koordináciu akcií v systéme.
Vzor singletónu sa používa v programovacích jazykoch ako Java a .NET na definovanie globálnej premennej. Jeden objekt používaný v systémoch zostáva konštantný a musí byť definovaný iba raz, nie viackrát.
Techopedia vysvetľuje Singleton
Účelom singletónu je poskytnúť iba jeden príklad sám o sebe a zároveň uľahčiť globálny prístupový bod. Implementácia vzoru singleton zahŕňa vytvorenie triedy pomocou metódy, ktorá vytvorí novú inštanciu triedy. Aby bolo možné implementovať model singleton, musia byť splnené zásady jediného stupňa a globálneho prístupu. Singleton trieda je ako globálne úložisko pre svoju vlastnú inštanciu, vďaka čomu je konštruktor súkromný. Preto inštanciu mimo triedy nie je možné vytvoriť vôbec a singleton môže obsahovať iba jednu inštanciu. Singletonová trieda sa inicializuje a udržuje túto inštanciu naprieč systémami.
Abstraktné vzory tovární, staviteľov a prototypov môžu používať singletóny. Fasádne objekty a statické objekty sú často singletóny. Implementácia Singleton vyžaduje mechanizmus, prostredníctvom ktorého je možné pristupovať k členom triedy bez toho, aby ste museli vytvárať objekt triedy a držať hodnoty členov triedy medzi objektmi triedy. Kroky, ktoré sa podieľajú na vytvorení singletonu, sú tieto:
- Konštruktor je súkromný. Toto umožňuje iba triede mať prístup k singleton.
- Jedna vnútorná inštancia triedy sa vytvorí pomocou metódy. Metóda sa v tomto príklade nazýva inštancia. Metóda „inštancia“ sa používa na inicializáciu triedy na prístup k jednej inštancii. Metóda inštancie je v tomto príklade označená ako statická, aby sa všetkým vláknom poskytol konzistentný prístup. Okrem vytvorenia inštancie sa príkaz „lock“ používa na riadenie viacvláknového prístupu. Toto uzamkne vytvorenie inštancie do jedného vlákna.
Príklad:
// Lenivé vytvorenie vnútornej inštancie singletonVerejná inštancia statických testovacích údajov
{
dostať
{
Lock (typ (testdata))
{
Ak (_instance == null)
_instance = testdata ();
}
Návrat _instance;
}
}
Príklad:
trieda testdata
{
Súkromné testdata ()
{
// … no-op pre singleton
