Junior — Middle
Можете ли да обясните концепцията за патърна State и как се използва в обектно-ориентираното програмиране?
sobes.tech AI
Отговор от AI
Моделът State позволява на обект да променя поведението си в зависимост от вътрешното си състояние, като променя класа на състоянието по време на изпълнение. Това помага да се избегнат големи условни оператори и да се направи кодът по-гъвкав и разширяем.
В обектно-ориентираното програмиране, за реализиране на модела State се създава базов интерфейс за състояние и няколко конкретни класа за състояния. Контекстът (основният обект) държи препратка към текущото състояние и делегира извикванията към него.
Пример на Java:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Състояние A обработва заявката.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Състояние B обработва заявката.");
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(); // Състояние A обработва заявката.
context.request(); // Състояние B обработва заявката.
По този начин поведението на обекта се променя динамично при смяна на състоянието.