vendredi 22 novembre 2024

Singleton

 === Singleton ===

Le modèle Singleton est un modèle de conception qui appartient à la catégorie des modèles de création. L'objectif principal du Singleton est de garantir qu'une classe n'a qu'une seule instance et de fournir un point d'accès global à cette instance.

Les caractéristiques clés du modèle Singleton sont les suivantes

1. Instance Unique : Le Singleton garantit qu'il n'y a qu'une seule instance de la classe et fournit un moyen d'y accéder depuis n'importe quel point du programme.

2. Accès Global : Il offre un point d'accès global à cette unique instance, généralement à travers une méthode statique (comme `Instance`).

3. Constructeur Privé : Le constructeur de la classe Singleton est privé pour empêcher l'instanciation directe de la classe depuis l'extérieur.

4. Lazy Initialization (initialisation paresseuse) : L'instance n'est créée que lorsqu'elle est demandée pour la première fois, plutôt qu'à la création de l'application.

using System;

public sealed class Singleton<T> where T : class, new()

{

private static readonly object lockObject = new object();

private static T instance = null;

private Singleton()

{

// Constructeur privé pour empêcher l'instanciation directe.

}

public static T Instance

{

get

{

lock (lockObject)

{

if (instance == null)

{

instance = new T();

}

return instance;

}

}

}

public void ExampleMethod()

{

Console.WriteLine("Méthode d'exemple du Singleton<T>");

}

}

class Program

{

static void Main()

{

// Accéder à l'instance du Singleton<T>

Singleton<Program> singletonInstance = Singleton<Program>.Instance;

// Appeler une méthode de l'instance

singletonInstance.ExampleMethod();

// Notez que vous ne pouvez pas

// instancier directement avec "new

// Singleton<Program>()"

// car le constructeur est privé. Vous devez

//utiliser l'instance unique avec

//Singleton<Program>.Instance.

}

}


Cette implémentation du Singleton générique suit le même principe que celle du Singleton standard, mais elle utilise un type générique `T` pour rendre le Singleton réutilisable pour différentes classes. Assurez-vous que le type `T` a un constructeur public sans paramètre.

Aucun commentaire:

Enregistrer un commentaire