Junior — Middle
Ako implementovať vykonávanie rôznych funkcií metódov v rámci triedy v závislosti od aktuálneho stavu alebo režimu práce triedy?
sobes.tech AI
Odpoveď od AI
Za implementáciu rôznych variánt správania metód triedy v závislosti od aktuálneho stavu alebo režimu prevádzky sa často používa vzor "Stav" (State).
Myšlienka je, že trieda má vnútorný stav, reprezentovaný samostatnými objektmi, ktoré implementujú spoločné rozhranie. Volanie metódy je delegované na aktuálny stav, ktorý určuje konkrétne správanie.
Príklad v Jave:
interface State {
void handle();
}
class StateA implements State {
public void handle() {
System.out.println("Správanie pre stav A");
}
}
class StateB implements State {
public void handle() {
System.out.println("Správanie pre stav B");
}
}
class Context {
private State state;
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle();
}
}
// Použitie
Context context = new Context();
context.setState(new StateA());
context.request(); // Správanie pre stav A
context.setState(new StateB());
context.request(); // Správanie pre stav B
Týmto spôsobom je možné meniť správanie metód bez použitia množstva podmienkových operátorov vnútri triedy.