Sobes.tech
Junior — Middle

Jak zaimplementować wykonywanie różnych funkcji metod w klasie w zależności od aktualnego stanu lub trybu pracy klasy?

sobes.tech AI

Odpowiedź od AI

Aby zaimplementować różne warianty zachowania metod klasy w zależności od aktualnego stanu lub trybu pracy, często używa się wzorca "Stan" (State).

Pomysł polega na tym, że klasa ma stan wewnętrzny, reprezentowany przez oddzielne obiekty implementujące wspólny interfejs. Wywołanie metody jest delegowane do aktualnego stanu, który określa konkretne zachowanie.

Przykład w Java:

interface State {
    void handle();
}

class StateA implements State {
    public void handle() {
        System.out.println("Zachowanie dla stanu A");
    }
}

class StateB implements State {
    public void handle() {
        System.out.println("Zachowanie dla stanu B");
    }
}

class Context {
    private State state;

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

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

// Użycie
Context context = new Context();
context.setState(new StateA());
context.request(); // Zachowanie dla stanu A
context.setState(new StateB());
context.request(); // Zachowanie dla stanu B

W ten sposób można zmieniać zachowanie metod bez konieczności stosowania wielu instrukcji warunkowych wewnątrz klasy.