Sobes.tech
Junior

Singleton naqshasi nima?

sobes.tech AI

AIdan javob

Singleton — bu yaratuvchi dizayn namuna bo‘lib, u sinfda faqat bitta nusxa bo‘lishini kafolatlaydi va bu nusxaga global kirish nuqtasini taqdim etadi. Bu, umumiy resurs yoki holatni boshqarish uchun yagona ob'ekt kerak bo‘lganda qo‘llaniladi.

Ishlash prinsipi:

  1. new yordamida yangi nusxalarni yaratishni taqiqlash uchun shaxsiy konstruktor.
  2. Yagona nusxani saqlash uchun shaxsiy statik maydon.
  3. Nusxaga kirishni ta'minlaydigan umumiy statik metod:
    • Nusxa yaratilgan yoki yo‘qligini tekshiradi.
    • Agar yo‘q bo‘lsa, uni yaratadi va statik maydonda saqlaydi.
    • Yaratilgan yoki mavjud nusxani qaytaradi.

Java misoli:

public class Singleton {
    // Nusxani saqlash uchun shaxsiy statik maydon
    private static Singleton instance;

    // Shaxsiy konstruktor
    private Singleton() {
        // Boshlang‘ich sozlash, agar kerak bo‘lsa
    }

    // Nusxaga kirish uchun umumiy statik metod
    public static Singleton getInstance() {
        // Lazy boshlang‘ich uchun null tekshiruvi
        if (instance == null) {
            // Ko‘p ipli muhitda xavfsizlik uchun sinxronlash
            synchronized (Singleton.class) {
                // Ichki ikkilamchi tekshirish
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    // Singleton biznes mantiqi
    public void doSomething() {
        System.out.println("Singleton nusxasi biror narsa qilmoqda.");
    }
}

QA Automationda qo‘llanilishi:

  • Test konfiguratsiyalarini boshqarish (xususiyat fayllari, muhit o‘zgaruvchilari).
  • Barcha testlar uchun bir xil brauzer drayveri (WebDriver) ning yagona nusxasi.
  • Log yoki hisobot menejeri.
  • Ma'lumotlar bazasiga ulanishlar havzasi.

Afzalliklari:

  • Faqat bitta nusxa bo‘lishini kafolatlaydi.
  • Quvvatli kirish nuqtasini taqdim etadi.
  • Lazy boshlang‘ich (faqat birinchi so‘rovda yaratiladi).

Kamchiliklari:

  • Bog‘liqliklarni yashirishi mumkin.
  • Singleton global holat bo‘lgani uchun birlik testlarini qiyinlashtiradi.
  • Yagona mas'uliyat prinsipi buziladi (sinf o‘z mantiqiga va hayot aylanishini boshqarishga mas'ul bo‘lishi mumkin).
  • To‘g‘ri amalga oshirilmasa, ko‘p ipli muammolar yuzaga kelishi mumkin.