Sobes.tech
Junior — Middle

Как да реализираме изпълнението на различни функции на методите вътре в клас, в зависимост от текущото състояние или режим на работа на класа?

sobes.tech AI

Отговор от AI

За реализиране на различни варианти на поведение на методите на клас в зависимост от текущото състояние или режим на работа често се използва шаблонът "Състояние" (State).

Идеята е, че класът има вътрешно състояние, представено от отделни обекти, реализиращи общ интерфейс. Викащият метод се делегира на текущото състояние, което определя конкретното поведение.

Пример на Java:

interface State {
    void handle();
}

class StateA implements State {
    public void handle() {
        System.out.println("Поведение за състояние A");
    }
}

class StateB implements State {
    public void handle() {
        System.out.println("Поведение за състояние B");
    }
}

class Context {
    private State state;

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

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

// Използване
Context context = new Context();
context.setState(new StateA());
context.request(); // Поведение за състояние A
context.setState(new StateB());
context.request(); // Поведение за състояние B

По този начин може да се променя поведението на методите без множество условни оператори вътре в класа.