En C#, puede utilizar los siguientes métodos para implementar el patrón singleton:
-
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; } } }
-
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.