Middle
Čo je to dekorátor v kontexte programovania?
sobes.tech AI
Odpoveď od AI
Dekorátor je vzor návrhu, ktorý umožňuje dynamicky pridávať nové správanie existujúcim objektom tak, že ich obalí do špeciálnych "obalových objektov" bez zmeny ich štruktúry.
Kľúčové princípy:
- Dynamické pridávanie správania: Funkcionalita sa pridáva počas behu, nie staticky.
- Priehľadnosť pre klienta: Klientsky kód komunikuje s dekorátorom, akoby to bol pôvodný objekt.
- Flexibilita: Umožňuje kombinovať rôzne dekorátory na dosiahnutie požadovaného správania.
Príklad v Pythone:
def my_decorator(func):
def wrapper():
print("Pred volaním funkcie")
func()
print("Po volaní funkcie")
return wrapper
@my_decorator
def say_hello():
print("Ahoj!")
# Volanie funkcie s dekorátorom
say_hello()
V tomto príklade je @my_decorator syntaktický cukor, ktorý je ekvivalentný s say_hello = my_decorator(say_hello).
Príklad v JavaScripte:
function logCall(target, key, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(`Volanie metódy ${key} s argumentmi: ${args}`);
const result = originalMethod.apply(this, args);
console.log(`Metóda ${key} vrátila: ${result}`);
return result;
};
return descriptor;
}
class Example {
@logCall
add(a, b) {
return a + b;
}
}
const instance = new Example();
instance.add(2, 3);
Tu, @logCall sa používa na pridanie logovania k metóde add triedy Example.
Použitie v QA Automation:
- Logovanie: Pridanie logovania k testovacím krokom alebo interakciám s prvkami.
- Spracovanie výnimiek: Obalenie volaní funkcií na spracovanie špecifických výnimiek.
- Správa stavu: Zmena stavu objektu pred alebo po volaní jeho metód (napríklad prepínanie kontextov).
- Autentifikácia/autorization: Kontrola práv prístupu pred vykonaním určitej akcie.