Ich arbeite an meiner ersten asp.net mvc Webanwendung. Ich habe eine Form, die in 14 verschiedenen Zuständen sein kann und abhängig vom aktuellen Zustand ist oder ist ein Übergang in andere Zustände nicht möglich. Es gibt einen Durchschnitt von 3-5 verschiedenen möglichen nächsten Zuständen für jeden aktuellen Zustand.Zustandsmaschine - eingebetteter Schalter
Was ich jetzt tun muss, ist die Auslösung von Aktionen während eines Zustandsübergangs. Abhängig vom Anfangszustand und den Endzuständen werden einige Aktionen ausgelöst (z. B. werden E-Mails gesendet).
Ich begann diese durch Switch-Anweisungen mit:
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)
{
...
}
}
...
Ich denke, diese Lösung für mich gut funktionieren würde, aber ich frage mich, ob ich etwas better..Any Vorschläge verwenden könnte?
Ich bevorzuge eine 'State' Basisklasse oder' IState' Schnittstelle und eine abgeleitete Klasse für jeden tatsächlichen Zustand. Etwas wie das erste Diagramm [hier] (https://www.codeproject.com/Articles/509234/The-State-Design-Pattern-vs-State-Machine). – itsme86
Aber die Aktion, die ich auslösen muss, basieren auf Zustandsübergang und nicht auf dem tatsächlichen Zustand –
Ich sehe nicht, warum das State Design-Muster in diesem Szenario nicht funktionieren würde. Lesen Sie den Teil des Artikels über 'ConcreteState' und seine Verantwortlichkeiten. – itsme86