Описание переходов между статусами обычно организуют через конечные автоматы (state machines) или паттерн "Состояние" (State pattern). В Java это можно реализовать с помощью enum, где каждый статус знает, в какие статусы он может перейти. Например:
Как организовано описание переходов между статусами?
Описание переходов между статусами обычно организуют через конечные автоматы (state machines) или паттерн "Состояние" (State pattern).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Описание переходов между статусами обычно организуют через конечные автоматы (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).