如何处理物理状态和逻辑状态之间的差异?
How to handle difference between physical state and logical state?
我有一个 DVD 播放器行为的状态图,它由一个用来存放 DVD 的抽屉组成。在图中,关闭状态和打开状态分别表示抽屉关闭和抽屉打开时的状态。假设播放器处于打开状态时关闭,抽屉里没有CD,抽屉打开,然后再次上电。从逻辑上讲,抽屉处于关闭状态,但在物理上抽屉处于打开状态。然后,如果用户按下加载按钮,系统打开已经处于打开状态的抽屉,因此没有任何效果。但是用户按下加载按钮是因为他看到抽屉是打开的并且希望如果他按下加载按钮抽屉会关闭。但如果他想关闭抽屉,他必须再次按下加载按钮。我怎样才能解决这样的问题?
How can I solve the problem like that?
实际上,您会依赖于 DVD 播放器设备已重启的某种通知:
如果播放器在其电源循环时自动将自己置于明确定义的状态,则您可以将逻辑状态与(推断的)物理状态同步。
如果播放器有传感器来检测物理状态,您可以探测它们,然后将逻辑状态同步到那个。
您可以发出 "open" 或 "close" 命令,检查命令是否成功,然后同步到您从中推断出的物理状态。
我有一个 DVD 播放器行为的状态图,它由一个用来存放 DVD 的抽屉组成。在图中,关闭状态和打开状态分别表示抽屉关闭和抽屉打开时的状态。假设播放器处于打开状态时关闭,抽屉里没有CD,抽屉打开,然后再次上电。从逻辑上讲,抽屉处于关闭状态,但在物理上抽屉处于打开状态。然后,如果用户按下加载按钮,系统打开已经处于打开状态的抽屉,因此没有任何效果。但是用户按下加载按钮是因为他看到抽屉是打开的并且希望如果他按下加载按钮抽屉会关闭。但如果他想关闭抽屉,他必须再次按下加载按钮。我怎样才能解决这样的问题?
How can I solve the problem like that?
实际上,您会依赖于 DVD 播放器设备已重启的某种通知:
如果播放器在其电源循环时自动将自己置于明确定义的状态,则您可以将逻辑状态与(推断的)物理状态同步。
如果播放器有传感器来检测物理状态,您可以探测它们,然后将逻辑状态同步到那个。
您可以发出 "open" 或 "close" 命令,检查命令是否成功,然后同步到您从中推断出的物理状态。