Arquitetura Corporativa para Todos

Artigo / Post

Singleton: Anti-pattern ou apenas mal interpretado?

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.

Compatilhe

0 0 votos
Avaliação Global
0 Comentários
Feedbacks embutidos
Ver todos os comentários
Categorias

Sobre o Autor

Picture of Fernando Cerqueira

Fernando Cerqueira

Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável. Como arquiteto sênior, aproveito meus mais de 20 anos de experiência em arquitetura e desenvolvimento de software para projetar e implementar soluções baseadas em nuvem que ajudam os clientes a transformar seus negócios com tecnologia.

Outros Posts

Categorias

Accountability

Accountability é um termo que vem sendo recorrente no vocabulário corporativo. Seu conceito quando bem aplicado habilita equipes de alta performance, por agregar a responsabilidade no lugar certo tornando mais ágil e transparente as decisões tomadas ao longo da jornada. Garante que os recursos e decisões sejam utilizados de maneira

Adotar classes seladas em .NET por padrão é uma ótima escolha

Adotar classes seladas em .NET por padrão é uma ótima escolha. Saiba por que! Em .net todas as classes que são criadas por padrão (template), permitem herança. Esta opção padrão deixa mais flexível qualquer implementação por herança, mas sendo sincero, acredito não ser esta a melhor opção : Uma classe

UUID (GUID)- Algumas provocações Praticas

Tive uma reunião a algum tempo para avaliar uma solução de alta volumetria com persistência de dados; para entendimento das grandezas envolvidas, são alguns terabytes de armazenamento e algo próximo de 1 bilhão de registros.  São números significativos onde, entre outros temas relevantes e uma excelente apresentação pelo time de

A Síndrome do Pato Flutuante na Era da IA

Precisamos ser cada vez mais humanos para sermos mais estratégicos com o uso da IA. Delegar para IA : Um caminho Insufiente Muitas empresas estão delegando a adoção de IA para suas áreas de tecnologia. À primeira vista, isso pode parecer lógico, mas será que é suficiente? Os impactos da

Foco na Solução ou Foco no Problema

Sinceramente, nenhum dos dois.! …; Deixa explicar, na minha humilde visão, porquê penso desse jeito: Uma solução é o resultado de uma ou mais ações para resolver um problema. Qualquer solução não é um motivador em si, podendo ter várias soluções/caminhos para resolver a mesma motivação, que inclusive pode não

"Obter performance é bem mais sobre saber trabalhar com concorrência e como usar de forma consciente os recursos que sobre saber aplicar padrões arquiteturais."

Fernando Cerqueira | Arquiteto Corporativo

Sua Reflexão

0
Adoraria saber sua opinião, comente.x