Nous devons utiliser le Singleton Design Pattern en C # lorsque nous devons nous assurer qu'une seule instance d'une classe particulière va être créée, puis fournir un accès global simple à cette instance pour l'ensemble de l'application.
Scénarios en temps réel dans lesquels vous pouvez utiliser le modèle de conception Singleton: Proxies de service: comme nous le savons, l'appel d'une API de service est une opération étendue dans une application. Le processus qui prend la plupart du temps est de créer le client de service afin d'appeler l'API de service. Si vous créez le proxy de service en tant que Singleton, les performances de votre application seront améliorées.
Façades: Vous pouvez également créer les connexions à la base de données en tant que Singleton, ce qui peut améliorer les performances de l'application.
Journaux: dans une application, l'exécution de l'opération d'E / S sur un fichier est une opération coûteuse. Si vous créez votre Logger en tant que Singleton, cela améliorera les performances de l'opération d'E / S.
Partage de données: si vous avez des valeurs constantes ou des valeurs de configuration, vous pouvez conserver ces valeurs dans Singleton afin qu'elles puissent être lues par d'autres composants de l'application.
Mise en cache: comme nous le savons, récupérer les données d'une base de données est un processus qui prend du temps. Dans votre application, vous pouvez mettre en cache le maître et la configuration en mémoire ce qui évitera les appels DB. Dans de telles situations, la classe Singleton peut être utilisée pour gérer la mise en cache avec la synchronisation des threads d'une manière efficace, ce qui améliore considérablement les performances de l'application.
Inconvénients du modèle de conception Singleton en C # Les inconvénients de l'utilisation du modèle de conception Singleton en C # sont les suivants:
Les tests unitaires sont très difficiles car ils introduisent un état global dans une application. Cela réduit le potentiel de parallélisme dans un programme car pour accéder à l'instance singleton dans un environnement multi-thread, vous devez sérialiser l'objet à l'aide du verrouillage.
J'ai pris cela de l'article suivant.
https://dotnettutorials.net/lesson/singleton-design-pattern/