Sobes.tech
Middle

Qu'est-ce qu'un décorateur dans le contexte de la programmation?

sobes.tech IA

Réponse de l'IA

Un décorateur est un patron de conception qui permet d’ajouter dynamiquement un comportement nouveau à des objets existants, en les enveloppant dans des "objets-emballages" spéciaux sans modifier leur structure.

Principes clés:

  • Ajout dynamique de comportement: La fonctionnalité est ajoutée en temps d’exécution, pas statiquement.
  • Transparence pour le client: Le code client interagit avec le décorateur comme s’il s’agissait de l’objet original.
  • Flexibilité: Permet de combiner différents décorateurs pour atteindre le comportement souhaité.

Exemple en Python:

def my_decorator(func):
    def wrapper():
        print("Avant l’appel de la fonction")
        func()
        print("Après l’appel de la fonction")
    return wrapper

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

# Appel de la fonction avec décorateur
say_hello()

Dans cet exemple, @my_decorator est un sucre syntaxique équivalent à say_hello = my_decorator(say_hello).

Exemple en JavaScript:

function logCall(target, key, descriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function(...args) {
        console.log(`Appel de la méthode ${key} avec arguments: ${args}`);
        const result = originalMethod.apply(this, args);
        console.log(`La méthode ${key} a retourné: ${result}`);
        return result;
    };
    return descriptor;
}

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

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

Ici, @logCall est utilisé pour ajouter un logging à la méthode add de la classe Example.

Application en QA Automation:

  • Logging: Ajout de logs aux étapes de tests ou interactions avec des éléments.
  • Gestion des exceptions: Envelopper les appels de fonctions pour gérer des exceptions spécifiques.
  • Gestion d’état: Modifier l’état de l’objet avant ou après l’appel de ses méthodes (par exemple, changer de contexte).
  • Authentification/autorisation: Vérifier les droits d’accès avant d’effectuer une action spécifique.