状态机(State Machine)是一种用于建模系统行为的抽象模型。它由一组状态和一组引起状态转换的事件组成。状态机描述了一个系统在不同状态下的行为和状态之间的转换规则。 简单说,接收事件,转换状态
一个状态机通常包括以下几个主要部分:
-
状态(States):
系统可能处于的不同状态的集合。每个状态表示系统在某一时刻的情况或配置。
-
事件(Events):
导致状态转换的外部输入或内部条件。
-
转换(Transitions):
定义状态之间的转换规则,即在某一状态下接收到某一事件时如何转换到下一个状态。
- 初始状态(Initial State):
系统开始时所处的状态。
- 终止状态(Final States)(可选):
系统可能终止的状态。
什么是状态机(Finite-state machine)?-CSDN博客
业务逻辑与状态转换有关用这个
public class OrderFSM
{
public enum State { Created, Paid, Shipped }
public State CurrentState { get; private set; } = State.Created;
// 第一段:状态转移逻辑
private State GetNextState(string eventName)
{
switch (CurrentState)
{
case State.Created:
return eventName == "Pay" ? State.Paid : CurrentState;
case State.Paid:
return eventName == "Ship" ? State.Shipped : CurrentState;
default:
return CurrentState;
}
}
// 第二段:行为逻辑
private void ExecuteStateAction(State newState)
{
switch (newState)
{
case State.Paid:
// 执行支付后的业务逻辑
break;
case State.Shipped:
// 执行发货后的业务逻辑
break;
}
}
// 第三段:外部输出(如日志、通知)
private void NotifyStateChange(State newState)
{
Console.WriteLine($"State changed to {newState}");
}
// 整合处理
public void ProcessEvent(string eventName)
{
var nextState = GetNextState(eventName);
if (nextState != CurrentState)
{
ExecuteStateAction(nextState);
NotifyStateChange(nextState);
CurrentState = nextState;
}
}
}