3

我需要实现一个非确定性的 FSM,所以我想出了定义一个 FSM 类的想法,该类包含状态和转换(可能取决于也可能不取决于其他 FSM 的状态,但必须取决于事件/输入)每个对象并将静态 std::map 添加到每个 FSM 将在构造时注册的类。这样,在事件/输入上,每个 FSM 可以在需要时查找其他 FSM 的状态并做出相应的行为,而无需将所有 FSM 组合成一个巨大的确定性 FSM。

这适用于一个 NFSM,这是我现在所需要的,但如果需要更多,可以扩展吗?这种设计有什么根本错误吗?

4

1 回答 1

3

我对静态部分非常不确定——地图似乎是个好主意。为所有相关的 FSM(即那些相互交互的)创建一个包含映射的命名空间对象似乎更合理,因为假设您可能想要可以独立运行的不同机器集(具有线程安全性)是合理的在许多情况下。

静态映射是单例的一个示例,通常被认为具有不好的代码气味。

于 2011-12-09T16:03:26.200 回答