jeudi 14 mars 2024

Design Pattern: Singleton

Un design pattern (patron de conception) est une solution générale et réutilisable à un problème courant rencontré lors de la conception de logiciels. Les design patterns offrent des solutions éprouvées pour des problèmes de conception spécifiques, en suivant des bonnes pratiques de conception logicielle.

Les design patterns permettent aux développeurs de communiquer efficacement sur des solutions de conception courantes, d'améliorer la maintenabilité du code, de favoriser la réutilisabilité et de garantir la scalabilité des applications. Ils sont souvent utilisés pour résoudre des problèmes de programmation orientée objet, mais peuvent également être appliqués à d'autres paradigmes de programmation.

Il existe plusieurs types de design patterns, tels que les design patterns créationnels, structurels et comportementaux, chacun étant adapté à des types de problèmes de conception spécifiques.

En résumé, les design patterns sont des solutions éprouvées aux problèmes de conception de logiciels qui permettent aux développeurs de concevoir des applications de manière efficace, maintenable et extensible.

=== 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.

!!! CODE: z8zaqOS6z2G3LAY_dkiBkg

Aucun commentaire:

Enregistrer un commentaire