Junior — Middle
105
Hogyan valósítható meg különböző metódus funkciók végrehajtása egy osztályon belül, az osztály aktuális állapotától vagy működési módjától függően?
Válasz az MI-től
sobes.tech MI
Для реализации разных вариантов поведения методов класса в зависимости от текущего состояния или режима работы часто используют паттерн «Состояние» (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
Так можно менять поведение методов без множества условных операторов внутри класса.