Junior — Middle
Можете ли да објасните концепт патерна State и како се користи у објектно оријентисаном програмирању?
sobes.tech АИ
Одговор од АИ
Модель Статус омогућава објекту да мења своје понашање у зависности од унутрашњег стања, при чему мења класу стања током извршавања. Ово помаже да се избегу велики условни оператори и учини код флексибилнијим и проширивијим.
У објектно-оријентисаном програмирању, за имплементацију модела Статус се креира основни интерфејс стања и неколико конкретних класа стања. Контекст (главни објекат) чува референцу на тренутно стање и делегира позиве томе.
Пример у Јави:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Стање А обрађује захтев.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Стање Б обрађује захтев.");
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(); // Стање А обрађује захтев.
context.request(); // Стање Б обрађује захтев.
На овај начин, понашање објекта се динамички мења при промени стања.