Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 当使用状态模式时,耗时的转换真的只是状态吗?_Design Patterns_State_Transitions_State Pattern - Fatal编程技术网

Design patterns 当使用状态模式时,耗时的转换真的只是状态吗?

Design patterns 当使用状态模式时,耗时的转换真的只是状态吗?,design-patterns,state,transitions,state-pattern,Design Patterns,State,Transitions,State Pattern,我正在使用状态模式来设计一个控制物理机器的服务。机器具有打开和关闭状态(以及一些其他有用的状态)。此外,它还有类似Open==>Close的转换 这些转换开始需要时间的物理过程,我想知道我是否真的应该将它们建模为状态 一方面,这些不是我期望机器处于的稳定状态。他们没有多种行为,也不接受命令。打开,只做一件事-它转换为打开 另一方面,我希望人们能够查询该服务,并得到关于其状态的真实答案。如果一个进程请求我的状态,并且我已经向机器发送了Open命令,但它还没有完成打开,那么我应该为状态返回什么?开场

我正在使用状态模式来设计一个控制物理机器的服务。机器具有打开和关闭状态(以及一些其他有用的状态)。此外,它还有类似Open==>Close的转换

这些转换开始需要时间的物理过程,我想知道我是否真的应该将它们建模为状态

一方面,这些不是我期望机器处于的稳定状态。他们没有多种行为,也不接受命令。打开,只做一件事-它转换为打开

另一方面,我希望人们能够查询该服务,并得到关于其状态的真实答案。如果一个进程请求我的状态,并且我已经向机器发送了Open命令,但它还没有完成打开,那么我应该为状态返回什么?开场白听起来不错


建议?智慧?这两种方法之间是否存在权衡

在实现状态机时,需要有稳定的状态。例如,在这种情况下,您应该有四种状态:打开、打开、关闭和关闭。这将使您的状态机更加清晰。此外,状态机的转换通常基于一个事件,即当状态机从关闭变为打开时有一个事件,当状态机从打开变为打开时有一个事件。代码生成事件所花的时间并不重要,状态机只关心维护状态。