Deux façons d'implémenter le mode singleton en C# (style chinois affamé, style chinois paresseux)

En C#, vous pouvez utiliser les méthodes suivantes pour implémenter le modèle singleton :

  1. Singleton impatient :

    • Les instances sont créées lorsque la classe est chargée.
    • Privatisez le constructeur pour empêcher l'instanciation externe.
    • Fournissez une propriété statique en lecture seule pour obtenir l'instance.
    • Exemple de code :
    // 在C#中,静态成员在类的构造函数之前被调用。静态成员是在类第一次被使用之前就被初始化的,而类的构造函数是在实例化类的对象时被调用的。
    //静态成员包括静态字段、静态属性和静态方法。它们会在程序运行时,无论是否创建类的实例,都会被初始化和调用
    public class Singleton
    {
          
          
        private static readonly Singleton instance = new Singleton();
    
        private Singleton() {
          
           }
    
        public static Singleton Instance
        {
          
          
            get {
          
           return instance; }
        }
    }
    
  2. Singleton paresseux :

    • Les instances sont créées uniquement lorsque cela est nécessaire.
    • Privatisez le constructeur pour empêcher l'instanciation externe.
    • Utilisez une variable statique pour enregistrer l'instance, avec une valeur initiale nulle.
    • Fournissez une propriété statique en lecture seule pour obtenir l’instance et instancier-la si l’instance est nulle.
    • Utilisez un verrouillage à double vérification pour garantir la sécurité du filetage.
    • Exemple de code :
    public class Singleton
    {
          
          
        private static Singleton instance = null;
        private static readonly object lockObj = new object();
    
        private Singleton() {
          
           }
    
        public static Singleton Instance
        {
          
          
            get
            {
          
          
                if (instance == null)
                {
          
          
                    lock (lockObj)
                    {
          
          
                        if (instance == null)
                        {
          
          
                            instance = new Singleton();
                        }
                    }
                }
                return instance;
            }
        }
    }
    

Ce sont des manières courantes d'implémenter le modèle singleton. Choisissez la manière appropriée en fonction des besoins et des scénarios spécifiques.

Guess you like

Origin blog.csdn.net/qq_41942413/article/details/133328264