Singleton, Java e C++

Pessoal, boa tarde.

Gostaria de levantar uma discussão sobre o singleton, o famigerado pattern que hoje é mais chamado de anti-pattern. Dentro do contexto do Java, o singleton oferece risco pois podemos ter mais de um ClassLoader contendo a mesma classe, desta forma, o objeto seria multiplicado e seu estado possivelmente não estaria sincronizado entre todas as instâncias, desta forma, ele foi trocado por outras soluções mais seguras. Porém no livro “Design Patterns” do Eric Gamma et al. podemos notar que o livro usa C++ e seus exemplos são todos baseados em aplicações standalone, como jogos e editores de texto, todos para desktop. Então será que podemos dizer que o singleton não precisa ser abolido, podendo ser utilizado com ressalvas em alguns tipos de aplicações? Acredito que dentro de alguns contextos e linguagens, sua utilização pode ser útil, não precisando ser riscado do catálogo de design patterns.

Em que ambientes você teria mais de um classloader?
Quais fontes determinam que o singleton não é um pattern a ser utilizado?
Enums entram neste ponto também?

Acho que você mesmo respondeu a pergunta. É pra ser utilizado com cuidado, por conta das questões que você citou. Acrescento ainda mais um cenário problemático: clusters.