Sobes.tech
Junior — Middle

Kas saaksite selgitada State mustri kontseptsiooni ja kuidas seda kasutatakse objektorienteeritud programmeerimises?

sobes.tech AI

Vastus AI-lt

State muster võimaldab objektil muuta oma käitumist sõltuvalt sisemisest olekust, vahetades oleku klassi jooksvalt. See aitab vältida suuri tingimuslauseid ning muudab koodi paindlikumaks ja laiendatavaks.

Objektorienteeritud programmeerimises luuakse oleku musteriks põhiliides ning mitu konkreetset olekuklassi. Kontekst (peamine objekt) hoiab viidet praegusele olekule ning delegeerib sellele väljakutseid.

Näide Java keeles:

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("Oleku A käsitleb taotlust.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("Oleku B käsitleb taotlust.");
        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);
    }
}

// Näide kasutamisest:
Context context = new Context(new ConcreteStateA());
context.request(); // Oleku A käsitleb taotlust.
context.request(); // Oleku B käsitleb taotlust.

Sellisel viisil muutub objekti käitumine dünaamiliselt oleku muutmisel.