Qu'est-ce que les singletons ont de si mauvais ?

Le [pattern singleton][1] est un membre à part entière du [GoF][2]'s [patterns book][3], mais il semble dernièrement plutôt orphelin du monde des développeurs. J'utilise encore beaucoup de singletons, en particulier pour les [classes d'usine][4], et bien qu'il faille faire un peu attention aux problèmes de multithreading (comme pour n'importe quelle classe en fait), je ne vois pas pourquoi ils sont si horribles.

Stack Overflow, en particulier, semble supposer que tout le monde est d'accord pour dire que les singletons sont mauvais. Pourquoi ?

Veuillez étayer vos réponses par des "faits, des références ou une expertise spécifique" ;

[1] : https://en.wikipedia.org/wiki/Singleton_pattern [2] : https://en.wikipedia.org/wiki/Design_Patterns [3] : http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612 [4] : https://en.wikipedia.org/wiki/Factory_method_pattern

  1. Elle est facilement (ab)utilisée comme variable globale.
  2. Les classes qui dépendent de singletons sont relativement plus difficiles à tester en isolation.
Commentaires (0)

Voir Wikipedia Singleton_pattern

Ce modèle est également considéré comme un anti-modèle par certaines personnes, qui estiment qu'il est trop utilisé, introduisant des limitations inutiles dans des situations où une seule instance d'une classe n'est pas réellement nécessaire[1][2][3][4].

Références (uniquement les références pertinentes de l'article)

  1. ^ Alex Miller. Patterns I hate #1 : Singleton, juillet 2007
  2. ^ Scott Densmore. Why singletons are evil, mai 2004
  3. ^ Steve Yegge. Les singletons considérés comme stupides, septembre 2004.
  4. ^ J.B. Rainsberger, IBM. Utilisez vos singletons à bon escient, juillet 2001.
Commentaires (2)

Comme il s'agit essentiellement de variables globales orientées objet, vous pouvez généralement concevoir vos classes de manière à ne pas en avoir besoin.

Commentaires (4)