Sobes.tech
Junior — Middle

Môžete vysvetliť koncept vzoru State a ako sa používa v objektovo orientovanom programovaní?

sobes.tech AI

Odpoveď od AI

Vzor State umožňuje objektu meniť svoje správanie v závislosti od vnútorného stavu, pričom počas behu mení triedu stavu. To pomáha vyhnúť sa veľkým podmienkovým operáciám a spraviť kód flexibilnejším a rozšíriteľnejším.

V objektovo orientovanom programovaní sa na implementáciu vzoru State vytvára základné rozhranie stavu a niekoľko konkrétnych tried stavov. Kontext (hlavný objekt) uchováva odkaz na aktuálny stav a deleguje mu volania.

Príklad v Jave:

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("Stav A spracováva požiadavku.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("Stav B spracováva požiadavku.");
        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);
    }
}

// Použitie:
Context context = new Context(new ConcreteStateA());
context.request(); // Stav A spracováva požiadavku.
context.request(); // Stav B spracováva požiadavku.

Takto sa správanie objektu dynamicky mení pri zmene stavu.