state transition with different guard condition

2020-07-26 02:25发布

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条回答
小情绪 Triste *
2楼-- · 2020-07-26 02:39

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.

查看更多
登录 后发表回答