begin process at 2008 07 25 18:19:48
1 216 413 membres
372 nouveaux aujourd'hui
14 181 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SINGLETON CODE SNIPPET


Information sur la source

Catégorie :Astuces Source .NET ( DotNet ) Classé sous : code, snippet, singleton Niveau : Débutant Date de création : 08/03/2006 Date de mise à jour : 08/03/2006 11:08:27 Vu / téléchargé: 6 388 / 255

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Cette source est un Code snippet pour Visual Studio 2005 permettant d'implémenter un singleton.

Le code snippet va créer la classe, accessible par une propriété (publique) Instance.

Remarque : Cette implémentation de singleton est "thread safe".

Source

  • /// <summary>
  • /// Singleton.
  • /// </summary>
  • sealed class ClassName
  • {
  • #region ClassName Singleton
  • /// <summary>
  • /// Unique instance of ClassName
  • /// </summary>
  • private static volatile ClassName instance = null;
  • /// <summary>
  • /// Synchronization's object
  • /// </summary>
  • private static object syncRoot = new Object();
  • /// <summary>
  • /// Get the unique instance of ClassName
  • /// </summary>
  • public static ClassName Instance
  • {
  • get
  • {
  • // Quick test
  • if (instance == null)
  • {
  • lock (syncRoot)
  • {
  • // Thread safe test
  • if (instance == null)
  • {
  • // First call, create the instance
  • instance = new ClassName();
  • }
  • }
  • }
  • return (instance);
  • }
  • }
  • #endregion // ClassName Singleton
  • /// <summary>
  • /// Private constructor of the singleton
  • /// </summary>
  • private ClassName()
  • {
  • }
  • }
    /// <summary>
    /// Singleton.
    /// </summary>
    sealed class ClassName
    {
        #region ClassName Singleton
        /// <summary>
        /// Unique instance of ClassName
        /// </summary>
        private static volatile ClassName instance = null;

        /// <summary>
        /// Synchronization's object
        /// </summary>
        private static object syncRoot = new Object();

        /// <summary>
        /// Get the unique instance of ClassName
        /// </summary>
        public static ClassName Instance
        {
            get
            {
                // Quick test
                if (instance == null)
                {
                    lock (syncRoot)
                    {
                        // Thread safe test
                        if (instance == null)
                        {
                            // First call, create the instance
                            instance = new ClassName();
                        }
                    }
                }
                return (instance);
            }
        }
        #endregion // ClassName Singleton

        /// <summary>
        /// Private constructor of the singleton
        /// </summary>
        private ClassName()
        {
        }
    }

Conclusion

Pour "installer" ce code snippet dans Visual Studio :

- Menu Tools, puis "Code Snippets Manager".
Il suffit ensuite d'importer le fichier founit dans cette source.

Pour utiliser le code snippet :
- Dans l'éditeur de code, taper "Singleton", puis appuyer sur <Tab>.
- Remplacer ClassName par le nom de votre classe singleton, puis appuyer sur <Entrée>.

Un lien utile, pour créer/éditer des code snippets avec Snippy :
http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b0813ae7-466a-43c2-b2ad-f87e4ee6bc39
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Singleton.snippetTélécharger ce fichier [Réservé aux membres club]1 683 octets

Télécharger le zip

08 mars 2006 11:08:28 :
Manquait le constructeur du singleton...
  • signaler à un administrateur
    Commentaire de MorpionMx le 17/03/2006 14:50:34 administrateur CS

    Très bonne idée l'idée du .snippet :)

  • signaler à un administrateur
    Commentaire de Khaled_ST le 14/02/2007 16:48:41

    Merci pour ton code, mais j ai une petite question. Ici le constructeur est déclaré "private". Comment on fait alors pour créer une première instance de l'objet ?
    Merci de votre réponse.

  • signaler à un administrateur
    Commentaire de MorpionMx le 14/02/2007 16:51:52 administrateur CS

    C'est le principe du singleton. Tu accedes a une instance unique via la propriété Instance

  • signaler à un administrateur
    Commentaire de Khaled_ST le 14/02/2007 17:01:12

    Oui en effet, il restais juste a dire que pour créer le premier objet dans une autre classe, au lieu de faire :
    ClassName classname = new ClassName;
    On nfait plutot
    ClassName classname = ClassName.Instance;
    Voila J'espère que ça aidera quelques uns parce que pour quelqu'un non habitué avec les singletons ce n'est pas très facile au début.

Ajouter un commentaire

Pub



Appels d'offres

Animation Flash alimen...
Budget : 6 000€
Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS