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.
Таким образом, поведение объекта меняется динамически при смене состояния.