Junior
Wat is het Singleton-patroon?
sobes.tech AI
Antwoord van AI
Singleton is een creational design pattern dat garandeert dat een klasse slechts één instantie heeft en een globaal toegangspunt tot die instantie biedt. Het wordt toegepast wanneer er een enkel object nodig is om een gedeelde bron of toestand te beheren.
Werking principe:
- Privé constructor om het maken van nieuwe instanties met
newte verbieden. - Privé statisch veld om de enige instantie op te slaan.
- Publieke statische methode die toegang tot de instantie biedt:
- Controleert of de instantie is gemaakt.
- Zo niet, maakt het en slaat het op in het statische veld.
- Retourneert de gemaakte of bestaande instantie.
Voorbeeld in Java:
public class Singleton {
// Privé statisch veld voor het opslaan van de instantie
private static Singleton instance;
// Privé constructor
private Singleton() {
// Initialisatie indien nodig
}
// Publieke statische methode om de instantie te krijgen
public static Singleton getInstance() {
// Null-check voor lazy initialisatie
if (instance == null) {
// Synchronisatie voor threadveiligheid
synchronized (Singleton.class) {
// Double-checked locking
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
// Businesslogica van singleton
public void doSomething() {
System.out.println("Singleton instance is doing something.");
}
}
Toepassing in QA Automation:
- Beheer van testconfiguraties (eigenschapsbestanden, omgevingsvariabelen).
- Enkele instantie van de browserdriver (WebDriver) wanneer alle tests dezelfde driver gebruiken.
- Log- of rapportagemanager.
- Pool van verbindingen met de database.
Voordelen:
- Garandeert dat slechts één instantie bestaat.
- Biedt een handig toegangspunt tot de instantie.
- Lazy initialisatie (wordt alleen bij de eerste aanvraag gemaakt).
Nadelen:
- Kan afhankelijkheden verbergen.
- Maakt unit testing moeilijker omdat singleton een globale toestand is.
- Schendt het principe van enkele verantwoordelijkheid (de klasse kan verantwoordelijk zijn voor haar logica en levenscyclusbeheer).
- Problemen met multithreading kunnen ontstaan als het niet correct wordt geïmplementeerd.