Sobes.tech
Junior — Middle
81

Можете объяснить концепцию паттерна State и как он используется в объектно-ориентированном программировании?

Компании, где спрашивали
Ifellow

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

sobes.tech AI

Паттерн State позволяет объекту изменять своё поведение в зависимости от внутреннего состояния, при этом меняя класс состояния во время выполнения. Это помогает избежать больших условных операторов и сделать код более гибким и расширяемым.

В объектно-ориентированном программировании для реализации паттерна State создаётся базовый интерфейс состояния и несколько конкретных классов состояний. Контекст (основной объект) хранит ссылку на текущее состояние и делегирует ему вызовы.

Пример на Java:

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("State A handling request.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("State B handling request.");
        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);
    }
}

// Использование:
Context context = new Context(new ConcreteStateA());
context.request(); // State A handling request.
context.request(); // State B handling request.

Таким образом, поведение объекта меняется динамически при смене состояния.