state transition with different guard condition

给你一囗甜甜゛ 提交于 2019-12-12 09:08:56

问题


In the state pattern how is this modeled ?

state A to state B on trigger X and conditon C1 when current state is A

state A to state C on trigger X and condition C2 when current state is A

how is this usually accomplished ? I have a lot of guard conditions that I may need to implement.


回答1:


That's pretty standard see e.g. this example.

[Edited on basis it's not homework!]

Assuming I understand right:

  • You have one event (X) which can trigger one of two possible transitions
  • Selecting which transition to fire is made according to which condition holds true (C1 or C2)

If so that's a standard case for using guard conditions. The syntax would be:

  • X[C1] as the label on the transition A->B, and
  • X[C2] on the transition A->C.

C1 & C2 must evaluate to booleans, so it would be fine to substitute var==2 as per your comment. i.e. the labels would become X[var==2] and X[var==3].

For it to be semantically correct, C1 & C2 must be mutually exclusive in state A - otherwise you have non-determinism.

hth.



来源:https://stackoverflow.com/questions/5724259/state-transition-with-different-guard-condition

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!