Sobes.tech
Junior

Паттерн-и Singleton чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Singleton як намунаи тарроҳии тавлидкунанда аст, ки кафолат медиҳад, ки дар класа танҳо як нусха вуҷуд дорад ва дастрасии глобалӣ ба он медиҳад. Вақте истифода мешавад, ки як объекти ягона барои идоракунии манбаи умумӣ ё ҳолат лозим аст.

Принсипи кор:

  1. Конструктории хусусӣ, барои манъ кардани эҷоди нусхаҳои нав бо истифода аз new.
  2. Филди статикӣ хусусӣ барои нигоҳдории нусхаи ягона.
  3. Методии статикӣ умумӣ, ки дастрасиро ба нусха медиҳад:
    • Санҷида, ки оё нусха сохта шудааст.
    • Агар не, онро месозад ва дар филди статикӣ нигоҳ медорад.
    • Нусхаи сохташуда ё мавҷударо бармегардонад.

Маслиҳат дар Java:

public class Singleton {
    // Филди статикӣ хусусӣ барои нигоҳдории нусха
    private static Singleton instance;

    // Конструктори хусусӣ
    private Singleton() {
        // Инициализатсия, агар лозим бошад
    }

    // Методии умумӣ барои гирифтани нусха
    public static Singleton getInstance() {
        // Санҷиши null барои инициализатсияи суст
        if (instance == null) {
            // Синхронизатсия барои бехатарии дар бисёрпайроҳа
            synchronized (Singleton.class) {
                // Санҷиши дубора дар дохили блоки синхронизатсияшуда (Double-Checked Locking)
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    // Логикаи бизнеси синглтон
    public void doSomething() {
        System.out.println("Singleton instance is doing something.");
    }
}

Истифода дар QA Automation:

  • Идоракунии танзимоти конфигуратсияҳои тестҳо (файлҳои хусусиятҳо, тағйирёбандаҳои муҳит).
  • Ягона нусхаи драйвери браузер (WebDriver) дар ҳолате, ки ҳамаи тестҳо як драйверро истифода мебаранд.
  • Менеджери логҳо ё ҳисоботҳо.
  • Пул пайвастагиҳо бо базаи додаҳо.

Бартариҳо:

  • Гарантӣ медиҳад, ки танҳо як нусха вуҷуд дорад.
  • Пешкаш кардани нуқтаи дастрасӣ ба нусха.
  • Инициализатсияи суст (дар аввал танҳо дархост карда мешавад).

Норасоиҳо:

  • Мумкин аст, ки вобастагиро пинҳон кунад.
  • Манъ мекунад тесткунии модулӣ, зеро синглтон — ин ҳолати глобалӣ.
  • Қайду шикастани принсипи масъулияти ягона (класа метавонад масъул бошад ҳам барои логикаи худ ва ҳам барои идоракунии давраи ҳаёти худ).
  • Мумкин аст, ки мушкилоти бисёрпайроҳа пайдо шаванд, агар дуруст татбиқ нашаванд.