Sobes.tech
Senior
44

Как организовано описание переходов между статусами?

Сұралған компаниялар
атон

AI-дан жауап

sobes.tech AI

Описание переходов между статусами обычно организуют через конечные автоматы (state machines) или паттерн "Состояние" (State pattern). В Java это можно реализовать с помощью enum, где каждый статус знает, в какие статусы он может перейти. Например:

public enum Status {
    NEW(EnumSet.of(IN_PROGRESS, CANCELLED)),
    IN_PROGRESS(EnumSet.of(DONE, CANCELLED)),
    DONE(EnumSet.noneOf(Status.class)),
    CANCELLED(EnumSet.noneOf(Status.class));

    private final Set<Status> allowedTransitions;

    Status(Set<Status> allowedTransitions) {
        this.allowedTransitions = allowedTransitions;
    }

    public boolean canTransitionTo(Status target) {
        return allowedTransitions.contains(target);
    }
}

Такой подход позволяет централизованно контролировать логику переходов и легко расширять ее. В более сложных случаях используют библиотеки для управления состояниями (например, Spring State Machine).