En C#, vous pouvez utiliser les méthodes suivantes pour implémenter le modèle singleton :
-
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; } } }
-
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.