Dos formas de implementar el modo singleton en C# (estilo chino hambriento, estilo chino perezoso)

En C#, puede utilizar los siguientes métodos para implementar el patrón singleton:

  1. Singleton ansioso:

    • Las instancias se crean cuando se carga la clase.
    • Privatizar el constructor para evitar la creación de instancias externas.
    • Proporcione una propiedad estática de solo lectura para obtener la instancia.
    • Ejemplo de código:
    // 在C#中,静态成员在类的构造函数之前被调用。静态成员是在类第一次被使用之前就被初始化的,而类的构造函数是在实例化类的对象时被调用的。
    //静态成员包括静态字段、静态属性和静态方法。它们会在程序运行时,无论是否创建类的实例,都会被初始化和调用
    public class Singleton
    {
          
          
        private static readonly Singleton instance = new Singleton();
    
        private Singleton() {
          
           }
    
        public static Singleton Instance
        {
          
          
            get {
          
           return instance; }
        }
    }
    
  2. Singleton perezoso:

    • Las instancias se crean solo cuando es necesario.
    • Privatizar el constructor para evitar la creación de instancias externas.
    • Utilice una variable estática para guardar la instancia, con un valor inicial nulo.
    • Proporcione una propiedad estática de solo lectura para obtener la instancia y crear una instancia si la instancia es nula.
    • Utilice un bloqueo de doble verificación para garantizar la seguridad del hilo.
    • Ejemplo de código:
    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;
            }
        }
    }
    

Estas son formas comunes de implementar el patrón singleton: elija la forma adecuada según las necesidades y escenarios específicos.

Supongo que te gusta

Origin blog.csdn.net/qq_41942413/article/details/133328264
Recomendado
Clasificación