Definición - ¿Qué significa Singleton?
Un singleton es una clase que permite que se cree una sola instancia de sí mismo y da acceso a esa instancia creada. Contiene variables estáticas que pueden acomodar instancias únicas y privadas de sí mismo. Se utiliza en escenarios en los que un usuario desea restringir la instanciación de una clase a un solo objeto. Esto suele ser útil cuando se requiere un solo objeto para coordinar acciones en un sistema.
El patrón singleton se utiliza en lenguajes de programación como Java y .NET para definir una variable global. Un solo objeto utilizado en todos los sistemas permanece constante y debe definirse solo una vez en lugar de muchas veces.
Techinfo explica Singleton
Un singleton está destinado a proporcionar solo una instancia de sí mismo al tiempo que facilita un punto de acceso global. La implementación de un patrón singleton implica la creación de una clase con un método que crea una nueva instancia de la clase. Para implementar un patrón singleton, se deben cumplir los principios de instancia única y acceso global. La clase singleton es como un repositorio global para una instancia de sí misma, lo que hace que el constructor sea privado. Por lo tanto, no se puede crear una instancia fuera de la clase y un singleton solo puede contener una instancia. Una clase singleton se instancia a sí misma y mantiene esa instancia en todos los sistemas.
Los patrones abstractos de fábrica, constructor y prototipo pueden usar singletons. Los objetos de fachada y los objetos estáticos suelen ser singleton. La implementación de singleton requiere un mecanismo a través del cual se puede acceder a un miembro de clase sin tener que crear un objeto de clase y mantener el valor de los miembros de clase entre los objetos de clase. Los pasos necesarios para crear un singleton son los siguientes:
- El constructor se hace privado. Esto permite que solo la clase tenga acceso al singleton.
- Se crea una única instancia interna de la clase mediante un método. El método se denomina instancia en este ejemplo. El método "instancia" se utiliza para inicializar la clase para acceder a una sola instancia. El método de instancia está marcado como estático en este ejemplo para dar a todos los subprocesos un acceso coherente. Fuera de la creación de la instancia, la declaración de "bloqueo" se utiliza para controlar el acceso multiproceso. Esto bloquea la creación de la instancia en un solo hilo.
Ejemplo:
// Creación diferida de instancia interna singleton
Instancia de testdata estática pública
{
Involúcrate
{
Bloquear (tipo de (testdata))
{
Si (_instancia == nulo)
_instancia = testdata ();
}
Devolver _instancia;
}
}
Ejemplo:
clase testdata
{
Testdata privado ()
{
// ... no hay operación para un singleton