Sobes.tech
Junior

Kas ir Singleton paraugs?

sobes.tech AI

Atbilde no AI

Singleton ir ir izplatīšanas raksts, kas nodrošina, ka klasē ir tikai viens eksemplārs un nodrošina globālu piekļuvi šim eksemplāram. To izmanto, kad nepieciešams vienots objekts kopējo resursu vai stāvokļa pārvaldībai.

Darba princips:

  1. Privāts konstruktors, lai aizliegtu jaunu eksemplāru izveidi ar new.
  2. Privāts statisks lauks, kas glabā vienīgo eksemplāru.
  3. Publiskais statiskais metodes, kas nodrošina piekļuvi eksemplāram:
    • Pārbauda, vai eksemplārs jau ir izveidots.
    • Ja nē, izveido un saglabā statiskajā laukā.
    • Atgriež izveidoto vai esošo eksemplāru.

Piemērs Java:

public class Singleton {
    // Privāts statisks lauks eksemplāram
    private static Singleton instance;

    // Privāts konstruktors
    private Singleton() {
        // Inicializācija, ja nepieciešama
    }

    // Publiskais statiskais metodes, kas iegūst eksemplāru
    public static Singleton getInstance() {
        // Lazy inicializācijai null pārbaude
        if (instance == null) {
            // Sinhronizācija, lai nodrošinātu drošību daudzprocesu vidē
            synchronized (Singleton.class) {
                // Atkārtota null pārbaude sinhronizētā blokā (Double-Checked Locking)
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    // Biznesa loģika singletonam
    public void doSomething() {
        System.out.println("Singleton instance is doing something.");
    }
}

Pielietojums QA automatizācijā:

  • Konfigurācijas iestatījumu pārvaldība (iestatījumu faili, vides mainīgie).
  • Viena WebDriver instance visiem testiem.
  • Žurnālu vai atskaišu pārvaldnieks.
  • Savienojumu baseinu ar datu bāzi.

Priekšrocības:

  • Garantē, ka ir tikai viens eksemplārs.
  • Ērta piekļuves punkts.
  • Lazy inicializācija (tiek izveidots tikai pie pirmā pieprasījuma).

Trūkumi:

  • Var slēpt atkarības.
  • Sarežģī modulāro testēšanu, jo singleton ir globāls stāvoklis.
  • Pārkāpj vienas atbildības principu.
  • Var rasties problēmas ar daudzprocesu vadību, ja tas netiek pareizi īstenots.