Pergunta

Não desperdice seu tempo com esta questão. Seguir-se a:? O que é tão ruim sobre singletons


Sinta-se livre para cadela na Singleton .

uso inadequado de Singleton pode causar muita tinta. Que tipo de problema que você experimentou com singleton? O que é mau uso comum desse padrão?


Depois de algumas escavações para a resposta de Corey Eu descobri alguns artigos greate sobre este tema.

Foi útil?

Outras dicas

Às vezes pode tornar seu código mais intimamente ligado com a classe singleton sendo refrerenced diretamente pelo nome de diferentes partes da sua base de código. Assim, por exemplo, quando você precisa para testar alguma parte do seu código e ele faz referência a um solteirão de uma parte diferent do código que você não pode facilmente falso que a dependência com um objeto fictício.

Não há nada de intrinsecamente errado com o padrão Singleton. É uma ferramenta e às vezes ele deve ser usado.

Eu não foram expostos ao Singleton, tanto quanto alguns dos outros cartazes têm, mas quase todas as implementações que eu vi (em C #) poderia ter sido alcançado com classes / métodos estáticos. Eu suponho que você poderia argumentar que uma classe estática é uma implementação do padrão Singleton, mas isso não é o que eu tenho visto. Tenho visto as pessoas a construir e gerenciar essas classes Singleton / objetos quando tudo o que realmente precisava era usar a palavra-chave estática.

Então, eu não diria o padrão Singleton é ruim. Eu diria que é um bocado como armas. Eu não acho que as armas são ruins, mas eles podem certamente pode ser usado de forma inadequada.

Eu acho que a pergunta mais apropriada seria: Em que situações é o uso de um padrão Singleton inapropriado? Ou o que você já viu que usa um Singleton que não deve.

Basicamente Singleton é uma maneira de ter dados estáticos e fingir que não é realmente estático.

É claro que eu usá-lo, mas tente não abusar dela.

Um problema básico com o projeto original GoF é o fato de que o destruidor não é protegido. Qualquer pessoa com uma referência à instância singleton é livre para destruir o singleton.

atualização See John Vlissides "para matar um Singleton" em seu livro "Pattern Hatching" ( Amazon ligação ).

aplausos,

Rob

Não há nada de errado com um singleton em si, e como um padrão que preenche um papel vital no reconhecimento da necessidade de certos objetos apenas ser criada uma única vez.

O que é frequentemente usado para é um eufemismo para variáveis ??globais como uma tentativa de contornar o estigma variável global, e é esse uso que é inerentemente errado. Se uma variável global passa a ser a solução correta, usando um singleton não vai melhorá-lo. Se é (como é bastante comum) incorreta de usar uma variável global, envolvendo-o em um singleton não vai fazer com que seja mais correto.

A maioria dos padrões únicos que vejo escritos não são escritas de uma forma thread-safe. Se escrito corretamente, eles podem ser úteis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top