国家模式和警卫

nor*_*tpy 14 state design-patterns state-machine state-diagram

更新:

状态模式可能是解决此问题的错误方法.因此,欢迎任何其他模式.基本上我正在寻找一种方法来为每个州提供保护条件,同时拥有干净且可维护的代码.guard conditions如果条件不满足,前端侧路由系统如emberjs,ui-router和react-router如何实现以避免进入特定状态?


我想通过使用State Pattern来实现一个有限状态机,但我无法绕过它.简而言之就像:

If error -> error state
If A && B && C -> second state
If only A -> first state
Run Code Online (Sandbox Code Playgroud)

在任何状态下,出错时,我们都会进入错误状态.输入(事件)A,B和C可能以任何顺序到达,但如果它们全部通过,我们将进入第二状态.如果只有输入A适用,那么我们进入第一状态.

以下状态图取自Martin Fowler的领域特定语言书.

DSL

在描述中他说:

格兰特小姐在她的卧室有一个秘密隔间,通常是锁定和隐藏的.要打开它,她必须关上门,然后打开胸口的第二个抽屉,按顺序打开她的床头灯.完成这些后,秘密小组将解锁,以便她打开.

我要强调,这turning lightopening 2nd drawer在发生任何顺序.与A,B和C相同

基于@SQLPolice的评论和书,我画了这个:

在此输入图像描述

但问题是,我可能有(A && B && C && D && D && E).在这种情况下,拥有所有组合临时状态将是麻烦的.

SQL*_*ice 3

快速草稿如下所示:

在此输入图像描述