C# Design Pattern: Singleton (Portugues)
Juarez Júnior
Posted on September 24, 2024
O padrão Singleton é útil quando precisamos garantir que uma classe tenha apenas uma instância durante o uso de uma aplicação. É como ter um único controle para um recurso importante. Isso é útil em situações como controlar o acesso a um arquivo de log, uma conexão de banco de dados, ou até mesmo configurações do sistema que precisam ser acessadas de qualquer lugar. O Singleton ajuda a garantir que esse acesso seja feito sempre pela mesma instância, evitando problemas de duplicação e desperdício de recursos.
Exemplo de Código em C#:
public class Singleton
{
private static Singleton _instance;
// Construtor privado para impedir a criação de instâncias externas
private Singleton() { }
public static Singleton Instance
{
get
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
public void ShowMessage()
{
Console.WriteLine("Singleton instance ativa!");
}
}
class Program
{
static void Main(string[] args)
{
Singleton s1 = Singleton.Instance;
Singleton s2 = Singleton.Instance;
s1.ShowMessage();
// Verificar se ambas as instâncias são iguais
Console.WriteLine(s1 == s2); // True
}
}
Explicação do Código:
No código, a classe Singleton garante que só existe uma instância dela. O construtor é privado, ou seja, ninguém pode criar outra instância diretamente. O método Instance cuida de retornar essa única instância, criando ela apenas se ainda não existir. No programa principal, as duas variáveis s1 e s2 fazem referência à mesma instância, comprovado pela comparação s1 == s2.
Conclusão:
O Singleton é um padrão simples e eficaz para garantir que uma classe tenha apenas uma instância, especialmente útil em situações onde se quer evitar duplicações desnecessárias, como em conexões ou configurações. É importante ter cuidado com seu uso para não gerar dependências que dificultem a manutenção e testes.
Código fonte: GitHub
Posted on September 24, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.