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 :
- Constructeur privé pour interdire la création de nouvelles instances avec
new. - Champ statique privé pour stocker l'unique instance.
- 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é.