【发布时间】:2018-01-05 07:34:43
【问题描述】:
我一直在解决以下问题。我是 C++ 的新手,我需要实现 嵌入式软件的状态机。该状态机应构成 应用程序逻辑的核心。它应该控制状态之间的转换 控制器的“STANDSTILL”、“RUN”和“FAULT”。这些转变发生基于 开启:逻辑输入状态、模拟输入状态、通过通信线路接收的消息以及在控制器软件内部创建的消息。
我想以我利用 C++(面向对象编程)的强大功能。所以我花了一些时间在 寻找一些合适的设计模式。我找到了“状态”设计 模式,但我不确定这对我来说是否是一个不错的选择。据,直到...为止 我以正确的方式理解该定义,它适用于以下情况 有一些对象(所谓的上下文对象),其行为(其公共接口的方法)强烈依赖于其状态。
我的第一个想法是所谓的上下文对象可以是控制器本身。 (我的意思是一个将实现整个设备的软件模型的类。)状态相关方法可以是与上述状态机处理的输入相关的方法,即逻辑输入、模拟输入、通过通信线路接收的消息和内部消息。但我不确定这是否是好方法。有人对状态设计模式的这种用法有任何经验吗?感谢您的任何建议。
【问题讨论】:
-
据我了解您的问题,您正确地将状态机模式转移到您的情况。
-
您正在寻找的是“有限状态机”,它已经有了相当多的实现。一定要检查boost中的那个是否可以使用(根据你的具体项目限制)
标签: c++ design-patterns embedded