Sobes.tech
Junior — Middle

Kā īstenot dažādu metožu funkciju izpildi klases iekšienē atkarībā no pašreizējā stāvokļa vai darba režīma?

sobes.tech AI

Atbilde no AI

Lai īstenotu dažādus klases metožu uzvedības variantus atkarībā no pašreizējā stāvokļa vai darba režīma, bieži izmanto "Stāvokļa" (State) dizaina paraugu.

Ideja ir tāda, ka klasei ir iekšējs stāvoklis, kas pārstāvēts ar atsevišķiem objektiem, kas īsteno kopēju interfeisu. Metodes izsaukums tiek deleģēts pašreizējam stāvoklim, kas nosaka konkrēto uzvedību.

Piemērs Java:

interface State {
    void handle();
}

class StateA implements State {
    public void handle() {
        System.out.println("Uzvedība stāvoklim A");
    }
}

class StateB implements State {
    public void handle() {
        System.out.println("Uzvedība stāvoklim B");
    }
}

class Context {
    private State state;

    public void setState(State state) {
        this.state = state;
    }

    public void request() {
        state.handle();
    }
}

// Lietošana
Context context = new Context();
context.setState(new StateA());
context.request(); // Uzvedība stāvoklim A
context.setState(new StateB());
context.request(); // Uzvedība stāvoklim B

Šādā veidā var mainīt metožu uzvedību bez daudzām nosacījumu operācijām klasē.