Middle
Декоратор дар контексти барномаинависӣ чист?
sobes.tech AI
Ҷавоб аз AI
Декоратор — бу дизайн намуна бўлиб, мавжуд объектларга динамик равишда янги хулосалар қўшишга imkon беради ва уларни махсус "қопламлар объектлари" ичига оради, уларнинг тузилмасини ўзгартирмай.
Асосий принциплар:
- Динамик хулосалар қўшиш: Функционаллик иш вақтида қўшилади, статик эмас.
- Мижоз учун ошкорлик: Мижоз коди декоратор билан оригинал объект каби ўзаро алоқада бўлади.
- Мослашувчанлик: Турли декораторларни бирлаштириш орқали керакли хулосани олиш мумкин.
Python мисоли:
def my_decorator(func):
def wrapper():
print("Функция чақирилиши олдидан")
func()
print("Функция чақирилиши кейин")
return wrapper
@my_decorator
def say_hello():
print("Салом!")
# Декоратор билан чақирилган функция
say_hello()
Бу мисолда, @my_decorator синтаксик шакар бўлиб, у say_hello = my_decorator(say_hello) билан тенгдир.
JavaScript мисоли:
function logCall(target, key, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(`Метод ${key} чақирилиши, аргументлар: ${args}`);
const result = originalMethod.apply(this, args);
console.log(`Метод ${key} қайтарди: ${result}`);
return result;
};
return descriptor;
}
class Example {
@logCall
add(a, b) {
return a + b;
}
}
const instance = new Example();
instance.add(2, 3);
Бу ерда, @logCall Example синфининг add методига логлашни қўшиш учун ишлатилади.
QA автоматизацияда қўлланиши:
- Логлаш: Тест қадамларига ёки элементлар билан ўзаро алоқаларга лог қўшиш.
- Хатоларни бошқариш: Функциялар чақирилишларини ўраб, махсус хатоларни бошқариш.
- Ҳолатни бошқариш: Объектнинг ҳолатини унинг методларини чақиришдан олдин ёки кейин ўзгартириш (масалан, контекстларни алмаштириш).
- Автентификация/авторизация: Аниқ бир ҳаракатни амалга оширишдан олдин кириш ҳуқуқларини текшириш.