Middle
Proqramlaşdırma kontekstində dekorator nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Dekorator — bu dizayn naxshi bo‘lib, mavjud ob’ektlarga dinamik tarzda yangi xususiyatlar qo‘shishga imkon beradi va ularni maxsus "qoplamalar ob’ektlari" ga o‘rab, ularning tuzilmasini o‘zgartirmasdan ishlaydi.
Asosiy tamoyillar:
- Dinamik xususiyat qo‘shish: Funktsionallik ish vaqtida qo‘shiladi, statik emas.
- Mijoz uchun shaffoflik: Mijoz kodi dekorator bilan original ob’ekt kabi o‘zaro aloqada bo‘ladi.
- Moslashuvchanlik: Turli dekoratorlarni birlashtirish orqali kerakli xususiyatga erishish mumkin.
Python misoli:
def my_decorator(func):
def wrapper():
print("Funktsiya chaqirilishidan oldin")
func()
print("Funktsiya chaqirilgandan keyin")
return wrapper
@my_decorator
def say_hello():
print("Salom!")
# Dekorator bilan chaqirilgan funksiya
say_hello()
Bu misolda, @my_decorator sintaktik shakar bo‘lib, say_hello = my_decorator(say_hello) ga teng.
JavaScript misoli:
function logCall(target, key, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(`${key} metod chaqirilishi, argumentlar: ${args}`);
const result = originalMethod.apply(this, args);
console.log(`${key} metod natijasi: ${result}`);
return result;
};
return descriptor;
}
class Example {
@logCall
add(a, b) {
return a + b;
}
}
const instance = new Example();
instance.add(2, 3);
Bu yerda, @logCall Example sinfidagi add metodiga log yozishni qo‘shish uchun ishlatiladi.
QA Automationda qo‘llanilishi:
- Log yozish: Test bosqichlariga yoki elementlar bilan o‘zaro aloqalarga log yozishni qo‘shish.
- Xatoliklarni boshqarish: Funksiya chaqiruvlarini sarmoya qilish orqali maxsus xatoliklarni boshqarish.
- Holatni boshqarish: Ob’ekt holatini uning metodlarini chaqirishdan oldin yoki keyin o‘zgartirish (masalan, kontekstlarni almashtirish).
- Autentifikatsiya/avtorizatsiya: Maxsus harakatdan oldin kirish huquqlarini tekshirish.