Sobes.tech
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.