Я собираюсь создать очень простой конечный автомат. Мой конечный автомат будет содержать следующие 3 состояния:
public enum States {
PENDING,
ACTIVE,
DONE
}
Здесь возможны несколько переходов + начальные состояния, а именно:
Начальные состояния: PENDING or ACTIVE
Переходы:
PENDING -> ACTIVE
PENDING -> DONE
ACTIVE -> DONE
Я ищу подходы к представлению этих состояний и возможный конечный автомат для управления переходами. Я изучил подход на основе перечисления, такой как этот, но я также хочу предоставить клиенту информацию о переходах между состояниями, и я не уверен, разумно ли это при таком подходе.
Я также рассмотрел другие методы, такие как State Pattern, но похоже, что это может быть излишним для такой простой просьбы.
Есть ли у кого-нибудь предложения для простых реализаций конечного автомата, отвечающих этим критериям? Я даже думал о чем-то столь же простом, как использование таблицы переходов для хранения переходов и инкапсуляция в нее концепции состояния, которая будет использовать таблицу переходов для определения следующих возможных состояний.