Junior — Middle
Môžete vysvetliť koncept vzoru State a ako sa používa v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
Vzor State umožňuje objektu meniť svoje správanie v závislosti od vnútorného stavu, pričom počas behu mení triedu stavu. To pomáha vyhnúť sa veľkým podmienkovým operáciám a spraviť kód flexibilnejším a rozšíriteľnejším.
V objektovo orientovanom programovaní sa na implementáciu vzoru State vytvára základné rozhranie stavu a niekoľko konkrétnych tried stavov. Kontext (hlavný objekt) uchováva odkaz na aktuálny stav a deleguje mu volania.
Príklad v Jave:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Stav A spracováva požiadavku.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Stav B spracováva požiadavku.");
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);
}
}
// Použitie:
Context context = new Context(new ConcreteStateA());
context.request(); // Stav A spracováva požiadavku.
context.request(); // Stav B spracováva požiadavku.
Takto sa správanie objektu dynamicky mení pri zmene stavu.