Sobes.tech
Junior

Qu'est-ce que le motif Singleton?

sobes.tech IA

Réponse de l'IA

Singleton est un patron de conception créatif qui garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à cette instance. Il est utilisé lorsque vous avez besoin d'un objet unique pour gérer une ressource ou un état partagé.

Principe de fonctionnement :

  1. Constructeur privé pour interdire la création de nouvelles instances avec new.
  2. Champ statique privé pour stocker l'unique instance.
  3. Méthode statique publique qui donne accès à l'instance :
    • Vérifie si l'instance a été créée.
    • Si non, la crée et la stocke dans le champ statique.
    • Retourne l'instance créée ou existante.

Exemple en Java :

public class Singleton {
    // Champ statique privé pour stocker l'instance
    private static Singleton instance;

    // Constructeur privé
    private Singleton() {
        // Initialisation si nécessaire
    }

    // Méthode statique publique pour obtenir l'instance
    public static Singleton getInstance() {
        // Vérification de null pour l'initialisation paresseuse
        if (instance == null) {
            // Synchronisation pour la sécurité en environnement multithread
            synchronized (Singleton.class) {
                // Double vérification dans le bloc synchronisé
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    // Logique métier du singleton
    public void doSomething() {
        System.out.println("Singleton instance is doing something.");
    }
}

Application en QA Automation :

  • Gestion des configurations de tests (fichiers de propriétés, variables d'environnement).
  • Instance unique du driver du navigateur (WebDriver) lorsque tous les tests utilisent le même driver.
  • Gestionnaire de logs ou de rapports.
  • Pool de connexions à la base de données.

Avantages :

  • Garantit la présence d'une seule instance.
  • Fournit un point d'accès pratique à l'instance.
  • Initialisation paresseuse (créée uniquement lors de la première demande).

Inconvénients :

  • Peut masquer des dépendances.
  • Rendra les tests unitaires plus difficiles, car le singleton est un état global.
  • Violent le principe de responsabilité unique (la classe peut être responsable de sa logique et de la gestion de son cycle de vie).
  • Des problèmes de concurrence peuvent survenir si ce n'est pas correctement implémenté.