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.