在状态机以外的桌面应用程序中维护状态的常用替代方法是什么?

时间:2014-05-18 09:45:53

标签: oop state-machine

我正在开发一个已有几年历史的桌面应用程序。应用程序的状态(关于用户当前正在执行的操作(多步操作),正在执行的计算,数据的权限状态,后台作业等)通过许多不同的方法(事件订阅,成员变量)来维护在控制器类中,依赖于其他类的内部逻辑/行为等...)

所以我的问题是,存在哪些常见模式(显式状态机除外)来管理足够灵活的应用程序状态:

  • 状态嵌套/本地化到特定模块(每个组件的状态不一定是每个其他组件都需要的。例如,一个向导会有一个私有/嵌套/本地状态,它暴露给它的任何部分但不是整个申请)
  • 状态容易暴露/共享/可达(即:某些视图中的选择需要对复制按钮可访问/可见,并且按钮还需要知道上下文(用户执行多步操作)或者是在后台运行的某项任务,所以我只能复制而不是剪切))

这是一个GUI应用程序,因此我们可以在共享/达到不同状态时依赖应用程序的层次结构特性。

1 个答案:

答案 0 :(得分:0)

状态机很简单,新手程序员可以理解,因此找到一个能够在以后帮助开发的人可能更容易。现有的库和工具也很少与状态机一起使用,因此从其他方面可能更容易。您还可以使用多个状态机,并通过一些简单的pub / sub基础架构进行通信。

类似方法是Petri Nets。它有点复杂,我还没有真正的实现经验,但它允许多个状态立即激活以表达并行进程。否则它看起来非常类似于传统的有限状态机。