5

मैं अपने आवेदन में परिमित राज्य मशीन मॉडल करने के लिए स्टेटलेस फ्रेमवर्क (https://code.google.com/p/stateless/) का उपयोग कर रहा हूं। कुछ राज्य हैं जो कुछ तर्क करना चाहिए और फिर तुरंत अगले राज्य में जाना चाहिए। मुझे आश्चर्य है कि यह ऐसा करने के लिए अच्छा अभ्यास है:क्या मुझे परिमित राज्य मशीन में ऑनएन्ट्री() विधि से राज्य को बदलने के लिए ट्रिगर को आग लगाना चाहिए?

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

क्या यह अच्छा एफएसएम डिज़ाइन है? यदि नहीं, तो बेहतर दृष्टिकोण क्या होगा? जिस विचार को मैं कार्यान्वित करने की कोशिश कर रहा हूं वह यह है कि कुछ राज्यों को स्वचालित रूप से अगली स्थिति में मशीन को अग्रिम कर दें, बिना कुछ बाहरी कोड जो कि DoSomeStuff() को समाप्त करने के लिए इंतजार कर रहा है और फिर मशीन को अगले राज्य में स्थानांतरित करने के लिए ट्रिगर करने के लिए।

उत्तर

6

आप राज्य धक्का बनाम राज्य खींच के बारे में बात कर रहे हैं। दोनों काम करता है, कुछ स्थितियों में एक दृष्टिकोण अधिक कुशल हो सकता है।

राज्य धक्का दृष्टिकोण होना बिल्कुल ठीक है, जहां एक राज्य कुछ काम करता है और एक संक्रमण को कॉल करता है।

संबंधित मुद्दे