Le design pattern Singleton : garantir l'unicité d'une instance

Découvrez comment le design pattern Singleton peut garantir l'unicité d'une instance dans une application.
Le design pattern Singleton : garantir l'unicité d'une instance
Design Patterns
5 min read
Lylian Guerra--Rago

Le design pattern Singleton : garantir l’unicité d’une instance

Le design pattern Singleton est un modèle de conception qui garantit qu’une classe n’a qu’une seule instance, tout en fournissant un point d’accès global à cette instance. Il est particulièrement utile lorsque vous avez besoin de contrôler l’accès à une ressource partagée, comme une base de données ou un fichier de configuration. Dans cet article, nous allons explorer ce qu’est le design pattern Singleton, pourquoi il est utile, comment il fonctionne, et nous verrons un exemple concret d’implémentation en TypeScript.

Qu’est-ce que le design pattern Singleton ?

Le design pattern Singleton est un modèle de conception créationnel qui garantit qu’une classe n’a qu’une seule instance et fournit un point d’accès global à cette instance. Il résout deux problèmes principaux :

  1. Unicité de l’instance : il garantit qu’une classe n’a qu’une seule instance.
  2. Accès global : il fournit un point d’accès global à cette instance unique.

Pourquoi utiliser le design pattern Singleton ?

Le design pattern Singleton offre plusieurs avantages :

  • Contrôle de l’accès : il permet de contrôler l’accès à une ressource partagée.
  • Économie de ressources : il évite la création de multiples instances d’une classe, ce qui peut économiser des ressources système.
  • Simplicité : il simplifie l’accès à une instance unique sans avoir à passer l’instance à travers différentes parties du code.

Comment fonctionne le design pattern Singleton ?

Le design pattern Singleton fonctionne en rendant le constructeur de la classe privé et en fournissant une méthode statique pour obtenir l’instance unique de la classe. Voici un aperçu de son fonctionnement :

  1. Constructeur privé : le constructeur de la classe est privé pour empêcher la création d’instances directes.
  2. Méthode statique : une méthode statique retourne l’instance unique de la classe.
  3. Instance statique : une variable statique stocke l’instance unique de la classe.

Implémentation du design pattern Singleton en TypeScript

Voici un exemple concret d’implémentation du design pattern Singleton en TypeScript :

class Singleton {
  private static instance: Singleton;

  private constructor() {
    // Initialisation de la classe
    console.log('Instance créée');
  }

  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }

  public someMethod(): void {
    console.log('Méthode exécutée');
  }
}

// Utilisation du Singleton
const singleton1 = Singleton.getInstance();
const singleton2 = Singleton.getInstance();

singleton1.someMethod(); // Output: Méthode exécutée
singleton2.someMethod(); // Output: Méthode exécutée

console.log(singleton1 === singleton2); // Output: true

Cas d’utilisation concret

Imaginons que vous développez une application qui doit gérer une connexion à une base de données. Vous pouvez utiliser le design pattern Singleton pour garantir qu’il n’y a qu’une seule instance de la classe de connexion à la base de données :

class DatabaseConnection {
  private static instance: DatabaseConnection;
  private connectionString: string;

  private constructor() {
    this.connectionString = 'Connexion à la base de données établie';
    console.log(this.connectionString);
  }

  public static getInstance(): DatabaseConnection {
    if (!DatabaseConnection.instance) {
      DatabaseConnection.instance = new DatabaseConnection();
    }
    return DatabaseConnection.instance;
  }

  public query(sql: string): void {
    console.log(`Exécution de la requête : ${sql}`);
  }
}

// Utilisation du Singleton pour la connexion à la base de données
const db1 = DatabaseConnection.getInstance();
const db2 = DatabaseConnection.getInstance();

db1.query('SELECT * FROM users'); // Output: Exécution de la requête : SELECT * FROM users
db2.query('SELECT * FROM orders'); // Output: Exécution de la requête : SELECT * FROM orders

console.log(db1 === db2); // Output: true

Conclusion

Le design pattern Singleton est un outil puissant pour garantir l’unicité d’une instance dans une application. Il permet de contrôler l’accès à une ressource partagée, d’économiser des ressources système et de simplifier l’accès à une instance unique. En utilisant ce pattern, vous pouvez améliorer la qualité de votre code et réduire les risques d’erreurs.

Si vous cherchez à améliorer la conception de votre application ou à simplifier la gestion des objets, le design pattern Singleton est une solution à considérer. Pour plus d’informations ou pour discuter de vos besoins en développement, n’hésitez pas à contacter notre équipe d’experts.


En intégrant ce type d’article sur votre blog, vous pouvez attirer des clients potentiels en démontrant votre expertise en matière de design patterns et de développement logiciel. N’oubliez pas d’optimiser votre contenu pour le référencement (SEO) en utilisant des mots-clés pertinents et en structurant votre article de manière claire et concise.

Share this article

You Might Also Like

Le design pattern Factory : simplifiez la création d'objets

Découvrez comment le design pattern Factory peut simplifier la création d'objets dans une application.