我正在使用我的第一個asp.net mvc web應用程序。我有一種形式可以處於14種不同的狀態,根據當前狀態,轉換到其他狀態是或不可能的。每個當前狀態下平均有3-5個可能的下一個狀態。狀態機 - 嵌入式開關
我現在需要做的是在某些狀態轉換期間觸發動作。根據初始狀態和最終狀態,會觸發一些操作(例如發送電子郵件)。
我用switch語句開始了這一點:
switch ((int)currentState)
{
//Initial
case -1:
{
switch ((int)nextState)
{
//Next state: Inv. is waiting
case 1:
{
//Send email to x
emailHelper.Send(x,msg)
//Send email to Y
emailHelper.Send(y,anotherMsg)
}
case 2:
{
doSomethingelse()
}
break;
}
break;
}
//Inv is waiting
case 1:
{
switch ((int)nextState)
{
...
}
}
...
我覺得這個解決方案將工作對我很好,但我想知道如果我可以用的東西better..Any建議?
我更喜歡爲每個實際狀態設置一個'State'基類或'IState'接口和一個派生類。像第一個圖[這裏](https://www.codeproject.com/Articles/509234/The-State-Design-Pattern-vs-State-Machine)。 – itsme86
但我需要觸發的動作是基於狀態轉換而不是實際狀態 –
我不明白爲什麼狀態設計模式在這種情況下不起作用。閱讀關於'ConcreteState'及其職責的文章部分。 – itsme86