Junior — Middle
El tudná magyarázni a State minta fogalmát és hogyan használják az objektumorientált programozásban?
sobes.tech MI
Válasz az MI-től
A State minta lehetővé teszi egy objektum számára, hogy belső állapotától függően viselkedését megváltoztassa, miközben futás közben az állapotszintet váltja. Ez segít elkerülni a nagy feltételes utasításokat, és rugalmasabbá, bővíthetőbbé teszi a kódot.
Objektumorientált programozásban a State minta megvalósításához létrehozunk egy alap állapot interfészt és több konkrét állapotszintet. A kontextus (fő objektum) tartalmazza a jelenlegi állapot hivatkozását, és átadja neki a hívásokat.
Példa Java-ban:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Állapot A kezeli a kérést.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Állapot B kezeli a kérést.");
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);
}
}
// Használat:
Context context = new Context(new ConcreteStateA());
context.request(); // Állapot A kezeli a kérést.
context.request(); // Állapot B kezeli a kérést.
Így az objektum viselkedése dinamikusan változik az állapotváltás során.