Padrão de design de singleton em C#

Padrão de design de singleton em C#

O padrão de design de singleton é um padrão de design amplamente usado na programação orientada a objetos, pois garante que apenas uma instância de classe seja criada e acessá-la fornece um ponto de acesso global. Isso significa que toda solicitação de uma instância da classe retorna a mesma instância, em vez de criar uma nova.

Padrão de design de singleton em C#

O padrão Singleton é conhecido por sua simplicidade e eficácia para garantir que exista apenas um exemplo da classe, tornando -o uma escolha popular para muitos desenvolvedores de software. O padrão Singleton é frequentemente usado para garantir que exista um único ponto de acesso a um recurso ou serviço compartilhado, aqui está a sintaxe para usá -lo:

classe selada pública

Private estático readonly instância = novo ();
privado ()
estática pública Instância

pegar

instância de retorno;


A palavra -chave selada é usada para impedir que a classe seja herdada e o campo de instância é marcado como leitura apenas para garantir que ela só possa ser inicializada uma vez e é inicializada na declaração com uma única instância da classe. O construtor é marcado como privado para impedir a instanciação externa da classe e a propriedade da instância fornece uma maneira de acessar a única instância da classe e é marcada como estática para que possa ser acessada sem criar uma instância da classe.

Em C#, um padrão de singleton é normalmente implementado usando um construtor privado, um campo de instância estática e uma propriedade ou método estático público para acessar a instância. A idéia básica é garantir que apenas uma instância da classe possa existir, controlando como ela é instanciada e acessada, aqui está um código de exemplo que demonstra a criação e o uso do padrão de design de singleton em C#:

usando o sistema;
// Defina a classe da calculadora com um construtor privado e um campo de instância estática
Calculadora de classe selada pública

instância de calculadora estática privada;
calculadora privada () // Construtor privado impede a instanciação da classe da calculadora de fora da própria classe
// Defina a propriedade da instância, que cria um novo objeto de calculadora se ainda não existir e retornar
instância pública da calculadora estática

pegar

if (instance == null) // verifique se um objeto de calculadora já foi criado

instância = new calculator (); // se não, crie um novo objeto de calculadora e atribua -o ao campo da instância

instância de retorno;

public int add (int x, int y)

retornar x + y;

// Defina o método subtraído, que subtrai um número inteiro de outro e retorna o resultado
public int subtract (int x, int y)

retornar x - y;


// Defina a classe do programa com um método principal
programa de classe

estático void main (string [] args)

Calculadora calc = calculadora.Instância; // Obtenha uma instância do objeto da calculadora usando a propriedade da instância
int resultado1 = calc.Add (5, 7); // Use o método Add para adicionar 5 e 7 juntos
Console.WriteLine ($ "Result1: Result1"); // emitir o resultado da adição ao console
int resultado2 = calc.Subtrair (10, 3); // Use o método subtraído para subtrair 3 de 10
Console.WriteLine ($ "Result2: Result2"); // emitir o resultado da subtração para o console

Neste exemplo, a classe da calculadora é definida com um construtor privado e um campo de instância estática. O construtor privado impede que a classe seja instanciada de fora da própria classe, enquanto o campo de instância estática garante que apenas uma instância da classe possa existir no momento.

A classe da calculadora também inclui uma propriedade de instância, que cria um novo objeto de calculadora se ainda não existir e retornar. Na primeira vez que a propriedade da instância é chamada, cria um novo objeto de calculadora e o atribui ao campo da instância, qualquer chamada subsequente para a propriedade da instância simplesmente retorna o objeto da calculadora existente.

A classe da calculadora também inclui métodos de adição e subtraia, que executam operações aritméticas básicas e retornam o resultado. Esses métodos estão apenas incluídos como um exemplo do tipo de funcionalidade que a classe da calculadora poderia fornecer.

Por fim, a classe do programa inclui um método principal, que cria uma instância da classe da calculadora usando a propriedade da instância e usa os métodos Adicionar e Subtrair para executar alguns cálculos simples. Os resultados desses cálculos são então emitidos para o console usando o console.Método WriteLine.

Se tentarmos criar uma nova instância da classe Calculadora usando o construtor padrão. Isso não funcionará porque o construtor da classe da calculadora é privado, o que impede que novas instâncias sejam criadas fora da classe.

Para demonstrar, criei uma nova instância da classe da calculadora usando a propriedade de instância da classe e, na saída, haverá um erro que afirma que essa classe é inacessível devido ao seu nível de proteção:

Ao demonstrar que novas instâncias são rejeitadas pelo padrão Singleton em C#, este exemplo mostra como o padrão Singleton garante que apenas uma instância de classe seja criada e mantida ao longo do programa.

Conclusão

O padrão Singleton é frequentemente usado em situações em que um único objeto precisa coordenar ações em todo o sistema, como um serviço de registro ou uma conexão de banco de dados. O padrão é implementado usando um construtor privado e uma propriedade estática que retorna uma única instância da classe, este artigo fornece uma explicação detalhada sobre esse padrão.