Junior
Co je to vzorec Singleton?
sobes.tech AI
Odpověď od AI
Singleton je návrhový vzor vytvárania, ktorý zaručuje, že trieda má iba jeden inštanciu a poskytuje globálny prístupový bod k tejto inštancii. Používa sa, keď je potrebný jeden objekt na správu spoločného zdroja alebo stavu.
Princíp fungovania:
- Súkromný konštruktor, ktorý zakazuje vytváranie nových inštancií pomocou
new. - Súkromné statické pole na uloženie jedinej inštancie.
- Verejná statická metóda, ktorá poskytuje prístup k inštancii:
- Kontroluje, či bola inštancia vytvorená.
- Ak nie, vytvorí ju a uloží do statického poľa.
- Vráti vytvorenú alebo existujúcu inštanciu.
Príklad v Jave:
public class Singleton {
// Súkromné statické pole na uloženie inštancie
private static Singleton instance;
// Súkromný konštruktor
private Singleton() {
// Inicializácia, ak je potrebná
}
// Verejná statická metóda na získanie inštancie
public static Singleton getInstance() {
// Kontrola na null pre lazy inicializáciu
if (instance == null) {
// Synchronizácia pre bezpečnosť v multithread prostredí
synchronized (Singleton.class) {
// Dvojitá kontrola
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
// Biznis logika singletonu
public void doSomething() {
System.out.println("Singleton inštancia niečo robí.");
}
}
Použitie v QA Automatizácii:
- Riadenie konfigurácií testov (súbory vlastností, premenné prostredia).
- Jediná inštancia ovládača prehliadača (WebDriver), ak všetky testy používajú ten istý ovládač.
- Manažér logov alebo správ.
- Pool spojení s databázou.
Výhody:
- Zaručuje, že existuje iba jedna inštancia.
- Poskytuje pohodlný prístupový bod k inštancii.
- Lazy inicializácia (je vytvorená iba pri prvej požiadavke).
Nevýhody:
- Môže skrývať závislosti.
- Znižuje testovateľnosť jednotiek, pretože singleton je globálny stav.
- Porušuje princíp jednotnej zodpovednosti (trieda môže byť zodpovedná za svoju logiku a správu životného cyklu).
- Môžu nastať problémy s viacvláknovým spracovaním, ak nie je správne implementovaný.