O Professor pediu para pesquisar o porque alguns consideram singleton como anti-pattern, aqui vai o resultado da minha pesquisa:

  • Na grande maioria é usado como uma variável global;
  • Quebra o princípio de resposabilidade singular, pois controla a própria criação e o ciclo de vida;
  • A dificuldade na inicialização e a impossibilidade do controle do ciclo de vida dificultam os testes, pois simular determinadas situações se tornam difícil.

Em geral as críticas ao singleton são em maioria quando usado de forma incorreta. A idéia em si de manter uma só instancia pode ser muito útil com loggers e conexões com o banco de dados, mas muitos dizem que as situações em que o singleton seja a melhor opção são extremamente raras.

Emfin, a recomendação é não usar singleton e sim injeção de dependencias.

 

Para aqueles que quiserem se aprofundar mais no assunto, sugiro a leitura do artigo do post da Caelum.

http://blog.caelum.com.br/singletons-e-static-perigo-a-vista/