O que há de tão mau nos singletons?

O singleton pattern é um membro do GoF's livro de padrões, mas ultimamente parece um pouco órfão do mundo desenvolvedor. Eu ainda uso um monte de singletons, especialmente para classes de fábrica, e enquanto você tem que ser um pouco cuidadoso com questões de multithreading (como qualquer classe na verdade), eu falho em ver porque eles são tão horríveis.

Stack Overflow especialmente parece assumir que todos concordam que os Singletons são maus. Porquê?

Por favor, apoie suas respostas com "fatos, referências, ou conhecimentos específicos"

  1. É facilmente (ab)usada como uma variável global.
  2. As classes que dependem de singletons são relativamente mais difíceis de testar isoladamente por unidade.
Comentários (0)

Veja o padrão da Wikipedia Singleton_pattern

É também considerado um anti-padrão por algumas pessoas, que sentem que é usado em excesso, introduzindo limitações desnecessárias em situações em que uma única instância de uma classe não é realmente necessária[1][2][3][4].

Referências (apenas referências relevantes do artigo)

  1. ^ Alex Miller. Patterns I hate #1: Singleton, Julho de 2007
  2. ^ Scott Densmore. Por que os singletons são maus, Maio de 2004
  3. ^ Steve Yegge. Singletons considerados estúpidos, Setembro de 2004
  4. ^ J.B. Rainsberger, IBM. Utiliza os teus singletons sabiamente, Julho de 2001
Comentários (2)

Como são basicamente variáveis globais orientadas a objetos, você geralmente pode projetar suas classes de tal forma que você não precise delas.

Comentários (4)