Patrón de diseño de Singleton en C#

Patrón de diseño de Singleton en C#

El patrón de diseño de Singleton es un patrón de diseño ampliamente utilizado en la programación orientada a objetos, ya que asegura que solo se cree una instancia de clase, y para acceder proporciona un punto de acceso global. Esto significa que cada solicitud de una instancia de la clase devuelve la misma instancia, en lugar de crear una nueva.

Patrón de diseño de Singleton en C#

El patrón Singleton es conocido por su simplicidad y efectividad para garantizar que solo haya una instancia de la clase, lo que lo convierte en una opción popular para muchos desarrolladores de software. El patrón de singleton a menudo se usa para garantizar que exista un solo punto de acceso a un recurso o servicio compartido, aquí está la sintaxis para usarla:

clase pública sellada

estática privada lectura instancia = nuevo ();
privado ()
estática pública Instancia

conseguir

instancia de retorno;


La palabra clave sellada se usa para evitar que la clase sea heredada y el campo de instancia se marca como se lee solo para garantizar que solo se pueda inicializar una vez, y se inicializa en la declaración con una sola instancia de la clase. El constructor está marcado como privado para evitar la instanciación externa de la clase y la propiedad de la instancia proporciona una forma de acceder a la instancia única de la clase y está marcada como estática para que se pueda acceder sin crear una instancia de la clase.

En C#, un patrón Singleton se implementa típicamente utilizando un constructor privado, un campo de instancia estática y una propiedad o método estático público para acceder a la instancia. La idea básica es garantizar que solo una instancia de la clase pueda existir controlando cómo se instancia y accede, aquí hay un código de ejemplo que demuestra la creación y uso del patrón de diseño Singleton en C#:

usando el sistema;
// Defina la clase de calculadora con un constructor privado y un campo de instancia estática
Calculadora de clase pública sellada

instancia de calculadora estática privada;
Calculator privado () // El constructor privado evita la instancia de la clase de calculadora desde fuera de la clase misma
// Defina la propiedad de instancia, que crea un nuevo objeto de calculadora si uno aún no existe y la devuelve
instancia de calculadora estática pública

conseguir

if (instance == null) // verifique si ya se ha creado un objeto de calculadora

instancia = nuevo calculador (); // Si no, crea un nuevo objeto de calculadora y asigna al campo de instancia

instancia de retorno;

public int add (int x, int y)

return x + y;

// Definir el método de resta, que resta un número entero de otro y devuelve el resultado
Public Int Recher (int x, int y)

regreso x - y;


// Defina la clase de programa con un método principal
programa de clase

static void main (string [] args)

Calculadora calc = calculadora.Instancia; // Obtener una instancia del objeto de calculadora utilizando la propiedad de instancia
int resultado1 = Calc.Agregar (5, 7); // Use el método Agregar para agregar 5 y 7 juntos
Consola.WriteLine ($ "resultado1: resultado1"); // emite el resultado de la adición a la consola
int resultado2 = Calc.Reste (10, 3); // Use el método de resta para restar 3 de 10
Consola.WriteLine ($ "result2: result2"); // emite el resultado de la resta a la consola

En este ejemplo, la clase de calculadora se define con un constructor privado y un campo de instancia estática. El constructor privado evita que la clase sea instanciada desde fuera de la clase misma, mientras que el campo de instancia estática asegura que solo una instancia de la clase pueda existir a la vez.

La clase de calculadora también incluye una propiedad de instancia, que crea un nuevo objeto de calculadora si uno aún no existe y la devuelve. La primera vez que se llama a la propiedad de instancia, crea un nuevo objeto de calculadora y lo asigna al campo de instancia, cualquier llamada posterior a la propiedad de instancia simplemente devuelve el objeto de calculadora existente.

La clase de calculadora también incluye métodos Agregar y Restar, que realizan operaciones aritméticas básicas y devuelven el resultado. Estos métodos se incluyen como un ejemplo del tipo de funcionalidad que la clase de calculadora podría proporcionar.

Finalmente, la clase de programa incluye un método principal, que crea una instancia de la clase de calculadora utilizando la propiedad de instancia y utiliza los métodos Agregar y Restar para realizar algunos cálculos simples. Los resultados de estos cálculos se emiten a la consola utilizando la consola.Método de escritura.

Si intentamos crear una nueva instancia de la clase de calculadora utilizando el constructor predeterminado. Esto no funcionará porque el constructor de la clase de calculadora es privado, lo que evita que se creen nuevas instancias fuera de la clase.

Para demostrar que creé una nueva instancia de la clase de calculadora utilizando la propiedad de instancia de la clase y en la salida habrá un error que indique que esta clase es inaccesible debido a su nivel de protección:

Al demostrar que el patrón Singleton rechaza las nuevas instancias en C#, este ejemplo muestra cómo el patrón Singleton asegura que solo se cree y mantenga una instancia de clase durante todo el programa.

Conclusión

El patrón de singleton a menudo se usa en situaciones en las que un solo objeto necesita coordinar acciones en todo el sistema, como un servicio de registro o una conexión de base de datos. El patrón se implementa utilizando un constructor privado y una propiedad estática que devuelve una sola instancia de la clase, este artículo ofrece una explicación detallada sobre este patrón.