首页 > 解决方案 > 过渡状态 VS 开关案例什么是应用状态机的最佳方法 [C#]

问题描述

我是 C# 开发人员,很多时候我在工作中使用状态机。在第一个是过渡状态之前我已经完成了很多方法(我不知道这种方式的实际名称是什么)

过渡状态示例:

public int wait_input_from_something;

public void state_a()
{
     while(true)
  {

     if(wait_input_from_something == 1)
         state_b();    // Actually it not call next state easy like this but the concept is the same.
      else if (wait_input_from_something == 2)  
         state_c();
   }

}

public void state_b()
{
     while(true)
  {
     if(wait_input_from_something == 3)
        state_a();
     else if (wait_input_from_something == 4)
        state_d();
  }
}


这仅显示了从一种状态直接转换到其他状态的概念,如果需要,这适用于每个方法的内部循环。

第二件事是 Switch-Case

while(true)
{
   switch (wait_input_from_something)
         {
             case 1:
                    state_b();
                    break;
              case 2:
                    state_c;
                    break;
              case 3:
                    state_a();
                    break;
              case 4:
                    state_d;
                    break;

            }
}


以上所有示例均不包含逻辑代码,但您可以了解如何从一种状态转换到另一种状态。实际上我更喜欢第一个过渡状态,因为代码可以很容易地监控每个状态的情况,我们可以为每个状态一个一个地诊断。

您能否建议使用状态机应用复杂应用程序的最佳方法是什么?每个解决方案的优点/缺点?

标签: c#design-patternsstate-machinefsm

解决方案


推荐阅读