Привет и извините заранее, если это уже было покрыто.
Я в основном озабочен написанием числового программного обеспечения, но я немного новичок, когда дело доходит до разработки приложений.
Я написал библиотеку, которая по существу берет данные из разных потоков данных или статических файлов, выполняет некоторый анализ данных и выводит данные на экран или в файл и т. Д., И я решил написать приложение с графическим интерфейсом, чтобы сделать его немного более удобным для пользователя.
Последовательность, в которой должны выполняться библиотечные вызовы, довольно проста, но есть некоторые ограничения на то, какие события должны обрабатываться в зависимости от состояния, в котором находится приложение. Т.е. Я не хочу, чтобы пользователь начал получать данные из одного источника данных, пока он уже обрабатывает данные из другого источника.
Поэтому я решил использовать конечный автомат. Однако мне было интересно узнать, как лучше всего интегрировать конечный автомат в ваше приложение. Должен ли я сделать его общедоступным интерфейсом к моей библиотеке или я должен по существу использовать его в качестве контроллера в инфраструктуре MVC, где библиотека является моделью, а GUI — представлением? Или есть лучший способ контролировать поток вашего приложения?
Спасибо за вашу помощь.
Вы правильно поняли. Gui = Вид, FSM = Контроллер, Библиотека + Статические данные + База данных + Модель.
Сказав это, посмотрите, можете ли вы разделить FSM на две части. Само определение перехода состояния должно быть сделано декларативным, чтобы вы могли легко изменять правила состояния. FSM должен быть простым транзитором состояний, который использует правила в базе правил состояний.
вы можете декларативно хранить правила, используя PMML, вариант XML.
Взгляните на это, оно объяснит то, что я пытался сказать, более красноречиво:
http://en.wikipedia.org/wiki/ADAPA
(не относится к ADAPA)
Других решений пока нет …