Taula de continguts:
Definició: què significa Singleton?
Un singleton és una classe que permet que només es creï una sola instància de si mateixa i doni accés a aquesta instància creada. Conté variables estàtiques que poden tenir cabuda instàncies pròpies i úniques. S'utilitza en escenaris quan un usuari vol restringir la instanciació d'una classe a un sol objecte. Això és útil normalment quan es requereix un únic objecte per coordinar accions a través d’un sistema.
El patró de singleton s’utilitza en llenguatges de programació com Java i .NET per definir una variable global. Un únic objecte utilitzat en els sistemes continua sent constant i s'ha de definir només una vegada en lloc de moltes vegades.
Techopedia explica Singleton
Un singleton està previst només proporcionar una instància de si mateix, alhora que facilita un punt d'accés global. Implementar un patró de singleton implica crear una classe amb un mètode que crea una nova instància de la classe. Per implementar un patró de singleton, s’han de complir els principis d’una sola instància i accés global. La classe de singleton és com un dipòsit global per a una instància de si mateix, fent que el constructor sigui privat. Per tant, una instància fora de la classe no es pot crear en absolut, i un singleton només pot contenir una instància. Una classe de singleton s’instancia i manté aquesta instància entre sistemes.
Els patrons de fabricants, constructors i prototips abstractes poden utilitzar singletons. Els objectes de façana i els objectes estàtics solen ser singlons. La implementació de Singleton requereix un mecanisme mitjançant el qual es pot accedir a un membre de la classe sense haver de crear un objecte de classe i mantenir el valor dels membres de la classe entre els objectes de la classe. Els passos implicats per crear un singleton són els següents:
- El constructor es fa privat. Això només permet que la classe tingui accés al singleton.
- Es crea una única instància interna de la classe mitjançant un mètode. El mètode s'anomena instància en aquest exemple. El mètode "instància" s'utilitza per inicialitzar la classe per accedir a una instància única. En aquest exemple, el mètode d'instància es marca com a estàtic per donar a tots els fils un accés constant. Fora de la creació de la instància, la instrucció "bloqueig" s'utilitza per controlar l'accés multithreaded. Això bloqueja la creació de la instància a un únic fil.
Exemple:
// Creació fefaent de la instància interna de singletonInstància de testdata estàtica pública
{
Aconseguir
{
Bloqueig (tipus de (testdata))
{
Si (_instància == null)
_instance = testdata ();
}
Retorn _instància;
}
}
Exemple:
testdata de classe
{
Data de prova privada ()
{
// … sense opcions per a un singletó