Я работаю над своим первым веб-приложением asp.net mvc. У меня есть форма, которая может быть в 14 разных состояниях и в зависимости от текущего состояния, переход к другим состояниям возможен или невозможен. Существует среднее значение 3-5 различных возможных состояний для каждого текущего состояния.Состояние машины - встроенный коммутатор
Что мне нужно сделать сейчас, это триггерные действия во время некоторого перехода состояния. В зависимости от начального состояния и конечных состояний запускаются некоторые действия (например, отправляются электронные письма).
Я начал это с помощью заявления переключателя:
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
Но действие, которое мне нужно вызвать, основано на переходе состояния, а не на фактическом состоянии –
Не понимаю, почему шаблон State Design не будет работать в этом сценарии. Прочтите часть статьи о «ConcreteState» и ее обязанностях. – itsme86