Sobes.tech
Middle

Kas ir dekorators programmēšanas kontekstā?

sobes.tech AI

Atbilde no AI

Dekorators — tas ir dizaina paraugs, kas ļauj dinamiski pievienot jaunu uzvedību esošajiem objektiem, apvijot tos ar speciāliem "apvijuma objektiem" bez to struktūras maiņas:

Galvenie principi:

  • Dinamisks uzvedības pievienojums: Funkcionalitāte tiek pievienota izpildes laikā, nevis statiski.
  • Pārskatāmība klientam: Klienta kods ar dekoratoru sadarbojas tā, it kā tas būtu oriģinālais objekts.
  • Elastība: Ļauj kombinēt dažādus dekoratorus, lai sasniegtu nepieciešamo uzvedību.

Python piemērs:

def my_decorator(func):
    def wrapper():
        print("Pirms funkcijas izsaukšanas")
        func()
        print("Pēc funkcijas izsaukšanas")
    return wrapper

@my_decorator
def say_hello():
    print("Sveiki!")

# Funkcijas izsaukums ar dekoratoru
say_hello()

JavaScript piemērs:

function logCall(target, key, descriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args) {
        console.log(`Metodes ${key} izsaukums ar argumentiem: ${args}`);
        const result = originalMethod.apply(this, args);
        console.log(`Metode ${key} atgrieza: ${result}`);
        return result;
    };
    return descriptor;
}

class Example {
    @logCall
    add(a, b) {
        return a + b;
    }
}

const instance = new Example();
instance.add(2, 3);

Šeit @logCall tiek izmantots, lai pievienotu žurnālošanu add metodē.

QA automatizācijas pielietojums:

  • Žurnālošana: Pievienot žurnālošanu testu soļiem vai mijiedarbībai ar elementiem.
  • Izņēmumu apstrāde: Apvij funkciju izsaukumus ar speciālu izņēmumu apstrādi.
  • Stāvokļa pārvaldība: Mainīt objekta stāvokli pirms vai pēc metodes izsaukuma (piemēram, kontekstu pārslēgšana).
  • Autentifikācija/rakstīšanās: Pārbaudīt piekļuves tiesības pirms veikt noteiktu darbību.