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) {
                // Դուբլիկատիվ ստուգում null-ի համար
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    // Սինգլտոնի բիզնես-լոգիկա
    public void doSomething() {
        System.out.println("Singleton instance is doing something.");
    }
}

Հայտում QA ավտոմատացման մեջ:

  • Կոնֆիգուրացիոն կարգավորումների կառավարում (գործառնական ֆայլեր, շրջակա միջավայրի փոփոխականներ)
  • Բրաուզերի վարորդի միակ օրինակ (WebDriver), երբ բոլոր թեստերը օգտագործում են նույն վարորդը
  • Լոգների կամ հաշվետվությունների կառավարիչ
  • Տվյալների բազայի կապերի պուլ

Առավելություններ:

  • Համոզված է, որ միայն մեկ օրինակ կա
  • Հարմարավետ հասանելիության կետ տրամադրում
  • Լենիվ ինիցիալիզացիա (ստեղծվում է միայն առաջին պահանջի դեպքում)

Մակարդակներ:

  • Կարող է թաքցնել կախվածությունները
  • Սթրեսային թեստավորման բարդացում, քանի որ սինգլտոնը գլոբալ վիճակ է
  • Խախտում է միակ պատասխանատվության սկզբունքը (класа կարող է պատասխանատու լինել նաև իր տրամաբանության համար և իր կյանքի ցիկլի կառավարման)
  • Մեծ հավանականություն է, որ առաջանան բազմափուլության խնդիրներ, եթե ճիշտ չիրականացվի։