Sobes.tech
Junior — Middle

Можете ли да објасните концепт патерна State и како се користи у објектно оријентисаном програмирању?

sobes.tech АИ

Одговор од АИ

Модель Статус омогућава објекту да мења своје понашање у зависности од унутрашњег стања, при чему мења класу стања током извршавања. Ово помаже да се избегу велики условни оператори и учини код флексибилнијим и проширивијим.

У објектно-оријентисаном програмирању, за имплементацију модела Статус се креира основни интерфејс стања и неколико конкретних класа стања. Контекст (главни објекат) чува референцу на тренутно стање и делегира позиве томе.

Пример у Јави:

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("Стање А обрађује захтев.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("Стање Б обрађује захтев.");
        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);
    }
}

// Коришћење:
Context context = new Context(new ConcreteStateA());
context.request(); // Стање А обрађује захтев.
context.request(); // Стање Б обрађује захтев.

На овај начин, понашање објекта се динамички мења при промени стања.