c# - 过渡状态 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;
}
}
以上所有示例均不包含逻辑代码,但您可以了解如何从一种状态转换到另一种状态。实际上我更喜欢第一个过渡状态,因为代码可以很容易地监控每个状态的情况,我们可以为每个状态一个一个地诊断。
您能否建议使用状态机应用复杂应用程序的最佳方法是什么?每个解决方案的优点/缺点?
解决方案
推荐阅读
- hibernate - Spring Jpa在休息响应中的一对多关系
- crashlytics - android中的Crashlytics空堆栈跟踪
- reactjs - React-slick - 在多个项目轮播中有条件地隐藏点
- string - 比较python中的空格
- visual-studio - Visual Studio 15.8.0 预览版 2.0 - MVC - 核心 2.1 - 添加 SOAP 作为连接的服务 - 包 dotnet-svcutil 的版本无法解析
- angular - 根据另一个输入字段 angular 6 自动填充输入字段
- dynamics-crm - 方法 Xrm.Utility.openDialog 已弃用,但为什么呢?
- optimization - GAMS 中的函数
- typescript - Bootstrap-Vue 类型
- javascript - 如何使用 jQuery 添加多个属性?