Ответ 1
FSM
- это DSL, который позволяет вам создавать более сложные, доступные для чтения государственные машины, чем это возможно, используя API-интерфейс основного актера. Вы могли бы потенциально показать код FSM деловому человеку, и они могли бы проверить бизнес-правила.
DSL FSM
позволяет вам компоновать вещи более чисто. Например, transitions позволяет отбросить логику, которая должна дублироваться в действиях become
. Также вы можете подписаться на других участников, чтобы получать уведомления о переходах, которые помогают с развязкой и тестированием.
Также таймеры прекрасно интегрируются в DSL, и такие вещи, как аннулирование, обрабатываются чисто. Сообщения тайм-аута кодирования с использованием планировщика имеют ряд ошибок.
Нижняя сторона FSM
- это DSL и новый синтаксис для других членов команды для переваривания. Верхняя сторона - это DSL и абстракция гораздо более высокого уровня. Я думаю, что порог для agilesteel двух состояний является хорошим. Но как только вы закончите 2 состояния, преимущества FSM
действительно привлекательны.
Определенно читать документы FSM и сопровождающие примеры контрастирующие become
и FSM
.
Одна заметка re: "popping" поведение с использованием unbecome
- поведение по умолчанию заключается в том, чтобы не использовать стекирование поведения. Это актуально только в небольшом количестве случаев использования (т.е. Обычно не государственных машин).