Comment faire pour implémenter un pattern singleton en C#

Comment faire pour implémenter un pattern singleton en C#

 

Bonjour,

 

Aujourd’hui nous allons étudier un pattern (ou modèle) le plus connu le « singleton ».  Pour ce tutoriel je n’invente rien je me suis amplement inspiré de cet article : http://csharpindepth.com/Articles/General/Singleton.aspx

Je vais juste expliquer à ma façon ce que vous pourraient avoir dans cet article.

 

Bon qu’est-ce qu’un singleton ?

C’est une classe que vous allez limiter son instanciation. Vous ne pourrez l’instancier une seule fois !

Quel est l’intérêt ?

Prenons comme exemple la consommation d’un web service et charger en fonction. Si à chaque fois que vous voulez utiliser, vous l’instancier  votre code sera vite ralenti. Par exemple Si vous  êtes 3 instanciations et qu’à chaque fois ça prend imaginons  5ms  cela vous fera 15ms qui pourraient éviter cela il suffit de créer un singleton.

 

Maintenant nous allons donc passer à quelque ligne de code … C# bien sur ^^.

Dans un premier temps qu’allons nous faire ?

Nous allons créer une classe Singleton avec trois propriétés :

–        Notre instance de la classe.

–        Une instance Object qui nous servira à rendre notre singleton thread-safe.

–         Une Propriété int.

(Image à venir)

Ensuite nous allons rendre privé notre constructeur.

(Image à venir)

Ensuite nous allons créer une propriété Instance ou l’on fera qu’un getter pour renvoyer l’instance de notre instance.

(Image à venir)

Voici notre première image sur laquelle on voit la classe qui  implémentera le pattern Singleton.

 

 

Pour le tester créer un simple projet console.

Déclarer une variable du type Singleton dans laquelle vous allez récupérer grâce à Singleton.Instance.

(Image à venir)

Créer une

Voilà un code pour le tester.

 

 

Conclusion : Un pattern singleton vous permettra de dégorger un code qui ferait appel souvent à une classe lourde en instanciation. Par exemple l’appelle à un lourd web service. Dans d’autres topique nous approfondirons le pattern pour voir comment le mettre en place avec le Framework .NET 4.