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.

 

 

Publicités

8 réflexions sur “Comment faire pour implémenter un pattern singleton en C#

  1. You actually make it appear really easy together with your presentation but I find this topic to be really something which I believe I’d by no means understand. It kind of feels too complex and very huge for me. I’m having a look ahead for your subsequent put up, Iˇ¦ll try to get the hang of it!

    1. amedar the boss is about to be easy: if I have a body too long I put a singleton to limit its instantiation. or what I think the difficulty is in its implementation in C # not hesitate to contact me for more explanation

      cordially

  2. Conclusion : Un pattern singleton vous permettra de dégorger un code qui ferait appel souvent à une classe lourde en instanciation.

    Depuis quand lol ? ^^

  3. Un singleton est un motif de conception pour une classe. Il permet de limiter l’instanciation de la classe à un seul et unique objet. Il ne pourra donc pas être créé plus d’une seule instance de la classe en question.

    Depuis que le design pattern existe.

    Ils est utilisé surtout pour limité l’instanciation d’objet de connexion au base de donnée ou a de lourd web-service.

    (lol)

    1. Non mais je sais très bien ce qu’est le Design Pattern Singleton.
      Sauf qu’on ne fait pas spécialement un Singleton pour une « classe lourde en instanciation ».

      Alors je ne sais pas ce que tu entends par « classe lourde en instanciation », mais depuis quand instancier une classe est long ?

    1. Tout simplement lorsque je veux avoir une seule instance d’une classe dans mon projet qui soit accessible de partout.
      Par exemple un seul Window manager ou une seule Factory de je ne sais quoi etc…

      Comme tu dis c’est un modèle de conception, c’est là pour faciliter le développement, le Singleton ne limite en rien le temps d’exécution de quoi que ce soit.

      1. Oui effectivement il ne limite pas le temps d’instanciation. Ce que je voulais dire : si tu as une classe qui mets longtemps à s’instancier tu va pas l’instancier X fois tu va limiter sont nombre d’instances et ainsi réduire le temps d’exécution de ton code. C’est dans le sens là qu’il faut le comprendre. ^^ il y a eu quiproquo je pense :p

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s