Junior — Middle
Kaip įgyvendinti skirtingų metodų funkcijų vykdymą klasės viduje priklausomai nuo dabartinės būsenos ar darbo režimo?
sobes.tech AI
Atsakymas iš AI
Įgyvendinti įvairius klasės metodų elgsenos variantus priklausomai nuo dabartinės būsenos ar darbo režimo, dažnai naudojamas "Būsenos" (State) dizaino šablonas.
Idėja ta, kad klasė turi vidinę būseną, kurią atstovauja atskiri objektai, įgyvendinantys bendrąjį sąsają. Metodo kvietimas deleguojamas į dabartinę būseną, kuri nustato konkretų elgesį.
Pavyzdys Java kalba:
interface State {
void handle();
}
class StateA implements State {
public void handle() {
System.out.println("Būsenos A elgesys");
}
}
class StateB implements State {
public void handle() {
System.out.println("Būsenos B elgesys");
}
}
class Context {
private State state;
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle();
}
}
// Naudojimas
Context context = new Context();
context.setState(new StateA());
context.request(); // Būsenos A elgesys
context.setState(new StateB());
context.request(); // Būsenos B elgesys
Šiuo būdu galima keisti metodų elgseną be daugybės sąlyginių operatorių klasės viduje.