O padrão de projeto Singleton garante que apenas uma instância de uma classe exista durante a execução de um programa, fornecendo um ponto de acesso global a essa instância.
Admito que já o classifiquei imprudentemente como um anti-pattern, mas estou aqui para me redimir. O Singleton resolve um problema recorrente e, por isso, tem sua utilidade. Mas por que é tão polêmico a ponto de ser chamado de anti-pattern?
🔎 Se você pesquisar, encontrará desvantagens como violação do Princípio da Responsabilidade Única, quebra do Princípio Aberto/Fechado e acoplamento elevado. Quando foi criado em 1944 (80 anos atrás, no livro “Design Patterns: Elements of Reusable Object-Oriented Software”), não tínhamos os recursos que as linguagens modernas oferecem. As desvantagens eram menores que as vantagens que o padrão resolvia. Com os avanços tecnológicos, o Singleton passou a oferecer mais desvantagens que vantagens, daí sua restrição de uso ou até ser citado como anti-pattern, porem ainda é usado e necessário em diversos cenários.
O Singleton pode ser útil em situações específicas, como no gerenciamento de conexões com bancos de dados, onde é importante garantir que apenas uma conexão seja usada. Mas como fazemos isso? Incorporando esse padrão em uma interface de uso ou em outros padrões.
Existem várias alternativas ao Singleton que podem ser mais adequadas dependendo do contexto do seu projeto:
Injeção de Dependência: Em vez de usar um Singleton, injete a dependência necessária em cada classe que a utiliza. Isso facilita o teste e reduz o acoplamento entre classes.
Fábrica (Factory): Cria instâncias de objetos conforme necessário, sem garantir que apenas uma instância exista. Útil para criar objetos complexos de maneira controlada.
Provedor de Serviços (Service Locator): Fornece uma maneira de obter instâncias de serviços sem usar Singletons diretamente. Pode ser configurado para fornecer instâncias únicas ou múltiplas conforme necessário.
🔥 Em resumo, o padrão Singleton é apenas mal interpretado. Continua firme e forte, mas cada vez mais “escondido” do que há 80 anos. Saiba usá-lo e por quê, mas com moderação.
E se nada disso fizer sentido para você, talvez possamos concordar que a versão líquida do tema seja mais fácil de engolir.
Tenham um excelente dia! Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável.






