Dans la plupart des langages de programmation, les classes échappent en grande partie au système de types. Bien qu'une classe, avec ses méthodes et ses variables statiques, soit un objet, elle ne peut très souvent pas implémenter une interface ou étendre d'autres classes. Pour cette raison, elle ne peut pas être utilisée de manière polymorphe, puisqu'elle ne peut pas être le sous-type d'un autre type. Par exemple, si vous avez une interface IFooable
qui est requis par plusieurs signatures de méthodes d'autres classes, l'objet classe StaticFoo
ne peut pas être utilisé à la place de IFooable
alors que FooSingleton.getInstance()
peut (en supposant, FooSingleton
met en œuvre IFooable
).
Veuillez noter que, comme je l'ai commenté dans la réponse de Heinzi, un singleton est un modèle pour contrôler l'instanciation. Il remplace new Class()
con Class.getInstance()
qui donne à l'auteur de Class
plus de contrôle sur les instances, qu'il peut utiliser pour empêcher la création d'instances inutiles. Le singleton n'est qu'un cas très particulier du factory pattern et doit être traité comme tel. Son utilisation courante en fait plutôt le cas particulier des registres globaux, ce qui finit souvent mal, car les registres globaux ne devraient pas être utilisés n'importe comment.
Si vous prévoyez de fournir des fonctions d'aide globales, les méthodes statiques feront parfaitement l'affaire. La classe n'agira pas comme une classe, mais plutôt comme un espace de nom. Je vous suggère de préserver une cohésion élevée, sinon vous risquez de vous retrouver avec des problèmes de couplage très étranges.
salutations
back2dos
0 votes
Duplicata possible de stackoverflow.com/questions/720744/static-class-and-singleton
0 votes
Je ne pense pas, puisque nous parlons de deux langues différentes, la réponse peut varier, mais merci pour le lien, en java je n'ai jamais entendu le terme "monostate".