如何将有限状态机集成到我的应用程序中
How do I integrate a finite state machine into my application?
您好,很抱歉,如果已经涵盖了这一点。
我主要专注于编写数字软件,但在应用程序设计方面我有点迟钝。
我已经编写了一个库,它基本上从不同的数据流或静态文件中获取输入,执行一些数据分析并将数据输出到屏幕或文件等。我决定编写一个gui应用程序,使其对用户更友好。
库调用的顺序很简单,但根据应用程序的状态,应该处理哪些事件有一些限制。也就是说,我不希望用户在处理另一个数据源时就开始从数据源获取数据。
所以我决定使用一个有限状态机。然而,我想知道将有限状态机集成到应用程序中的最佳实践是什么。我应该将其作为库的公共接口,还是应该将其本质上用作MVC框架中的控制器,库是模型,GUI是视图?或者有更好的方法来控制应用程序的流程吗?
谢谢你的帮助。
你做对了。Gui=视图,FSM=控制器,库+静态数据+数据库+模型。
话虽如此,看看是否可以将FSM进一步拆分为两部分。状态转换定义本身应该是声明性的,这样您就可以轻松地更改状态规则。FSM应该是一个简单的状态瞬态,它使用状态规则库中的规则。
您可以使用XML的变体PMML以声明方式存储规则。
看看这个,它将更雄辩地解释我试图说的话:http://en.wikipedia.org/wiki/ADAPA
(与ADAPA无关)
相关文章:
- 我的应用程序无法在安卓上使用OpenSSL进行链接
- 我的 c++ 应用程序中的运行时间从 0 增加到 60 太快了(例如一毫秒或一微秒)
- 设置我的应用程序 API 感知并防止系统使其模糊和错误定位
- 是否可以将不同的编译器嵌入到我的应用程序中?
- 即使在我为我的应用程序授予管理员后也无法从 Windows 系统复制目录
- 计算有多少人执行我的C++应用程序
- 为什么我的 C# 应用程序无法加载我的 C++ dll?
- 是否可以将 VBA 编程环境添加到我的C++应用程序?
- 指定在用户固定我的应用程序时用于运行应用程序的命令参数
- LOCAL_SHARED_LIBRARIES使我的应用程序崩溃
- 为什么使用 nullPtr 调用函数不会使我的应用程序崩溃
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 为什么Linux报告了我的应用程序的内存使用情况
- 如何使用Qt读取我的应用程序屏幕像素数据
- 为什么我的应用程序即使我的应用程序也关闭,即使我有cin.get();
- 需要知道 Windows API 才能在我的应用程序激活时获取回调
- 我的应用程序是从Visual Studio内部运行还是通过执行EXE文件运行
- 在我的应用程序中侦听 iexplorer 的关闭事件
- 将 python 嵌入我的应用程序时内存泄漏
- 当我释放由CFFI生成的DLL分配的char*时,为什么我的应用程序会崩溃