Sobes.tech
Middle

Mis on dekoratsioon programmeerimise kontekstis?

sobes.tech AI

Vastus AI-lt

Dekoratsioon — see on disainimuster, mis võimaldab dünaamiliselt lisada olemasolevatele objektidele uut käitumist, neid ümbritsedes spetsiaalsete "ümbrise objektidega" ilma nende struktuuri muutmata:

Põhiprintsiibid:

  • Dünaamiline käitumise lisamine: Funktsionaalsus lisatakse jooksvalt, mitte statiliselt.
  • Kliendi jaoks läbipaistvus: Kliendikood suhtleb dekoratsiooniga nagu see oleks algne objekt.
  • Paindlikkus: Võimaldab kombineerida erinevaid dekoratsioone soovitud käitumise saavutamiseks.

Python näide:

def my_decorator(func):
    def wrapper():
        print("Enne funktsiooni kutsumist")
        func()
        print("Pärast funktsiooni kutsumist")
    return wrapper

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

# Funktsiooni kutsumine dekoratsiooniga
say_hello()

JavaScript näide:

function logCall(target, key, descriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args) {
        console.log(`Meetodi ${key} kutsumine argumentidega: ${args}`);
        const result = originalMethod.apply(this, args);
        console.log(`Meetod ${key} tagastas: ${result}`);
        return result;
    };
    return descriptor;
}

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

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

Siin kasutatakse @logCall, et lisada logimine add meetodile.

QA automatiseerimise rakendused:

  • Logimine: Logimise lisamine testide sammudele või elementidega suhtlemisel.
  • Erandite töötlemine: Funktsioonide väljakutsete ümbritsemine spetsiifiliste erandite töötlemiseks.
  • Oleku haldamine: Objekti oleku muutmine enne või pärast meetodi väljakutset (nt kontekstide vahetamine).
  • Autentimine/lubade kontroll: Õiguste kontroll enne teatud tegevuse sooritamist.