Objektumelvű Programozás

State minta

A State minta lehetővé teszi egy objektum viselkedésének megváltoztatását annak állapota alapján. Ez a minta segít elkerülni a bonyolult feltételes logikát.

State minta diagramja
A State minta struktúrája
Forrás: https://refactoring.guru/design-patterns/state
További részletek

A State minta az állapotfüggő viselkedést külön osztályokba szervezi, így az objektum működése rugalmasan módosítható.

Egyszerű példa Java nyelven

interface State {
    void handle();
}

class OnState implements State {
    public void handle() {
        System.out.println("Bekapcsolva");
    }
}

class OffState implements State {
    public void handle() {
        System.out.println("Kikapcsolva");
    }
}

class Context {
    private State state;

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

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

class Main {
    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new OnState());
        context.applyState();
    }
}