5

Korzystam z ramy bezstanowej (https://code.google.com/p/stateless/) do modelu skończonej maszyny stanów w mojej aplikacji. Są pewne stany, które powinny wykonać pewną logikę, a następnie natychmiast przejść do następnego stanu. Zastanawiam się, czy to dobra praktyka, aby zrobić to tak jak:Czy powinienem uruchomić wyzwalacz, aby zmienić stan z metody OnEntry() w skończonym komputerze stanu?

  var machine = new StateMachine<State, Trigger>(State.Idle); 
      machine.Configure(State.StateA) 
      .OnEntry(() => 
      { 
       DoSomeStuff(); 
       _machine.Fire(Trigger.TriggerB);  // move to StateB 
      }); 

Czy to jest dobry projekt FSM? Jeśli nie, jakie byłoby lepsze podejście? Pomysł, który próbuję zaimplementować, to mieć pewne stany, które automatycznie przesuwają maszynę do następnego stanu bez posiadania zewnętrznego kodu, który czeka na DoSomeStuff(), aby zakończyć, a następnie do uruchomienia maszyny, aby przejść w następnym stanie.

Odpowiedz

6

Wygląda na to, że mówisz o pchnięciu stanu w stosunku do stanu ciągnięcia. Obie prace, jedno podejście może być bardziej skuteczne w niektórych sytuacjach.

Jest całkiem dobrze mieć podejście oparte na państwowym podejściu, w którym jeden stan działa i wywołuje przejście.

Powiązane problemy