Конечный автомат не сообщает (не заставляет) иметь однонаправленный поток данных.Это не имеет ничего общего с потоком данных.Это больше о ограничениях изменений состояния и о переходах состояний .Таким образом, обычно только некоторые части приложения будут создаваться с помощью конечных автоматов, и только если вам нужно ограничить / запретить некоторые изменения состояния, и вы заинтересованы в переходах.
Остерегайтесь того, что с конечными автоматами, если по какой-то причине (зависимость от внешнего API и т. Д.), Есть вероятность, что приложение может быть заблокировано в состоянии, когда оно не может перейти в другое состояние из-за ограничений,Вы должны решить его.
Но , если вас интересует только само состояние последнего приложения, а не переходы состояний , и ограничения состояния не имеют значения, тогда вылучше не использовать конечный автомат и напрямую обновлять состояние ( вы все еще можете переносить состояние в обновлении класса Singleton через классы действий ).
С другой стороны, Redux - это Структура однонаправленной архитектуры .Однонаправленные архитектуры обеспечивают единую направленность потока данных.В Redux он начинается с User->View->(Action)->Store->Reducer->(Middleware)->Store->(State)->View
.Подобно State Machines, вы можете запускать побочные эффекты с помощью Middlewares в Redux.Вы можете ограничить / запретить переходы состояний, если хотите. В отличие от конечного автомата , Redux вызывает однонаправленный поток данных, pure !функции редуктора, неизменяемые объекты состояния, одно наблюдаемое состояние приложения.