Junior
რა არის Singleton ნიმუში?
sobes.tech AI
პასუხი AI-სგან
Singleton — դա ստեղծող ձևանմուշ է, որը երաշխավորում է, որ դասի միայն մեկ օրինակ կա և տրամադրում է այդ օրինակին գլոբալ հասանելիություն։ Օգտագործվում է, երբ անհրաժեշտ է միավոր օբյեկտ՝ ընդհանուր ռեսուրսը կամ վիճակը կառավարելու համար։
Աշխատանքի սկզբունքը:
- Անհատական կոնստրուկտոր՝ արգելելու համար նոր օրինակների ստեղծումը
new-ի միջոցով։ - Անհատական ստատիկ դաշտ՝ միակ օրինակին պահելու համար։
- Պубличային ստատիկ մեթոդ՝ որը տրամադրում է հասանելիություն օրինակին՝
- Ստուգում է, արդյոք օրինակն արդեն ստեղծված է։
- Եթե ոչ, ստեղծում է և պահում է ստատիկ դաշտում։
- Վերադարձնում է ստեղծված կամ առկա օրինակին։
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), երբ բոլոր թեստերը օգտագործում են նույն վարորդը
- Լոգների կամ հաշվետվությունների կառավարիչ
- Տվյալների բազայի կապերի պուլ
Առավելություններ:
- Համոզված է, որ միայն մեկ օրինակ կա
- Հարմարավետ հասանելիության կետ տրամադրում
- Լենիվ ինիցիալիզացիա (ստեղծվում է միայն առաջին պահանջի դեպքում)
Մակարդակներ:
- Կարող է թաքցնել կախվածությունները
- Սթրեսային թեստավորման բարդացում, քանի որ սինգլտոնը գլոբալ վիճակ է
- Խախտում է միակ պատասխանատվության սկզբունքը (класа կարող է պատասխանատու լինել նաև իր տրամաբանության համար և իր կյանքի ցիկլի կառավարման)
- Մեծ հավանականություն է, որ առաջանան բազմափուլության խնդիրներ, եթե ճիշտ չիրականացվի։