Sobes.tech
Junior — Middle

Pouvez-vous expliquer le concept du pattern State et comment il est utilisé en programmation orientée objet ?

sobes.tech IA

Réponse de l'IA

Le patron State permet à un objet de changer son comportement en fonction de son état interne, en modifiant la classe d’état pendant l’exécution. Cela aide à éviter de gros opérateurs conditionnels et rend le code plus flexible et extensible.

En programmation orientée objet, pour implémenter le pattern State, on crée une interface de base pour l’état et plusieurs classes concrètes d’état. Le contexte (l’objet principal) conserve une référence à l’état actuel et délègue les appels à celui-ci.

Exemple en Java :

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("État A gère la requête.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("État B gère la requête.");
        context.setState(new ConcreteStateA());
    }
}

class Context {
    private State state;

    public Context(State state) {
        this.state = state;
    }

    public void setState(State state) {
        this.state = state;
    }

    public void request() {
        state.handle(this);
    }
}

// Utilisation :
Context context = new Context(new ConcreteStateA());
context.request(); // État A gère la requête.
context.request(); // État B gère la requête.

Ainsi, le comportement de l’objet change dynamiquement lors du changement d’état.