Sobes.tech
Junior — Middle

Ar galite paaiškinti būsenos modelio koncepciją ir kaip jis naudojamas objektinio programavimo srityje?

sobes.tech AI

Atsakymas iš AI

Būsenos modelis leidžia objektui keisti savo elgesį priklausomai nuo vidinio būsenos, keičiant būsenos klasę vykdymo metu. Tai padeda išvengti didelių sąlyginių operatorių ir padaro kodą lankstesnį ir išplečiamą.

Objektų orientuoto programavimo srityje, norint įgyvendinti būsenos modelį, sukuriamas pagrindinis būsenos sąsajos interfeisas ir keli konkretūs būsenos klasės. Kontekstas (pagrindinis objektas) saugo nuorodą į dabartinę būseną ir deleguoja jai iškvietimus.

Pavyzdys Java kalba:

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("Būsenos A tvarko užklausą.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("Būsenos B tvarko užklausą.");
        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);
    }
}

// Pavyzdys naudojant:
Context context = new Context(new ConcreteStateA());
context.request(); // Būsenos A tvarko užklausą.
context.request(); // Būsenos B tvarko užklausą.

Šiuo būdu objekto elgesys dinamiškai keičiasi keičiant būseną.