Sobes.tech
Назад к вопросам
Junior — Middle
67

Каким образом реализовать выполнение различных функций методов внутри класса в зависимости от текущего состояния или режима работы класса?

Ответ от нейросети

sobes.tech 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

Так можно менять поведение методов без множества условных операторов внутри класса.