Sobes.tech
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 автоматизацияда қўлланиши:

  • Логлаш: Тест қадамларига ёки элементлар билан ўзаро алоқаларга лог қўшиш.
  • Хатоларни бошқариш: Функциялар чақирилишларини ўраб, махсус хатоларни бошқариш.
  • Ҳолатни бошқариш: Объектнинг ҳолатини унинг методларини чақиришдан олдин ёки кейин ўзгартириш (масалан, контекстларни алмаштириш).
  • Автентификация/авторизация: Аниқ бир ҳаракатни амалга оширишдан олдин кириш ҳуқуқларини текшириш.