как получить преимущества от фреймворка без сохранения состояния

Я хотел бы использовать http://code.google.com/p/stateless в моем коде чтобы отделить функциональность от ее зависимостей. Я не нашел никаких дополнительных примеров использования, поэтому этот вопрос касается лучших практик фреймворка без сохранения состояния.

У меня следующая конфигурация (это всего лишь пример, имеет только одно состояние функции):

var stateMachine = new StateMachine(State.Stopped);

stateMachine.Configure(State.Stopped)
    .Permit(Trigger.Failed, State.Error)
    .Permit(Trigger.Succeed, State.GenerateMachineData);

stateMachine.Configure(State.GenerateMachineData)
    .Permit(Trigger.Failed, State.Error)
    .Permit(Trigger.Succeed, State.Finished);

public enum State
{
    Stopped,
    GenerateMachineData,
    Finished,
    Error
}

public enum Trigger
{
    Succeed,
    Failed
}

где вызывать фактическое тогда функциональность. У меня были следующие идеи, но у каждой из них есть свои достоинства и недостатки: переключатель (stateMachine.State) { Состояние Остановлено: stateMachine.Fire (State.Succeed); сломать; State.GenerateMachineData: Создать (); stateMachine.Fire (State.Succeed); сломать; дефолт: бросить новое исключение (); } }

void Main () { while (stateMachine.State! = State.Succeed && stateMachine.State! = State.Error) { DoTheStuff (); } }

  • преимущества: автомат можно протестировать сам
  • недостатки: совсем не нравится

3) какое-то другое решение?

буду рад любому ответу

18
задан DaveInCaz 20 August 2019 в 17:30
поделиться