Des problèmes avec le Pattern Singleton

J'ai lu sur le pattern Singleton pour les derniers jours. La perception générale est que les scénarios où il est nécessaire sont assez rares (si ce n'est rare), probablement parce qu'il a son propre ensemble de problèmes tels que

  • Dans un garbage collection environnement, il peut être un problème en ce qui concerne la gestion de la mémoire.
  • Dans un environnement multithread, il peut provoquer des goulots d'étranglement et d'introduire des problèmes de synchronisation.
  • Des maux de tête à partir d'essais prespective.

Je commence à avoir des idées derrière ces questions, mais pas totalement sûr au sujet de ces préoccupations.
Comme dans le cas de la collecte des ordures problème, l'utilisation de static singleton dans la mise en œuvre (qui est inhérent au modèle), c'est que le souci? Comme cela signifierait que l'instance statique durera jusqu'à l'application. Est-ce quelque chose qui se dégrade de gestion de la mémoire (il signifie simplement que la mémoire allouée à un singleton ne sera pas libéré)?

Bien sûr dans une multithread d'installation, d'avoir tous les threads dans le conflit pour l'instance du singleton serait un goulot d'étranglement. Mais comment l'utilisation de ce modèle provoque des problèmes de synchronisation (certes, nous pouvons utiliser un mutex ou quelque chose comme ça pour synchroniser l'accès).

À partir d'une (unité?)les tests de point de vue, depuis les singletons utiliser des méthodes statiques (qui sont difficiles à se moque de lui ou écrasé), ils peuvent causer des problèmes. Pas sûr à ce sujet. Quelqu'un peut-il donner des précisions sur ces tests concernent?

Grâce.

InformationsquelleAutor Ankur | 2009-09-08