2012-12-08 35 views
7

नेटवर्क प्रोग्रामिंग में परिदृश्य हैं जिन्हें आपको एकाधिक और पदानुक्रमित गहराई वाले राज्य मशीनों की आवश्यकता है।बहुस्तरीय और पदानुक्रमित राज्य मशीनों के लिए डिज़ाइन

State Machine 1 
    State Machine 2 

    State Machine 3 
      State Machine 4 

यहाँ राज्य मशीन 1 दो राज्य मशीनों 2 और 3 शामिल हैं। में मशीन 4 भी शामिल है।

बाहरी मशीन की स्थिति के आधार पर, संदेश आंतरिक राज्य मशीनों से गुज़रना चाहिए। इसके अलावा यदि आंतरिक राज्य मशीनों में कुछ त्रुटि है तो प्रतिक्रिया ऊपरी मशीनों को दी जानी चाहिए।

क्या ऐसा करने के लिए कोई अच्छा तरीका है?

अभी मेरे पास बयान और झंडे का जंगल है जो मेरे लिए यह करता है। मुझे समस्याओं का सामना करना पड़ता है कि कुछ ध्वज सेट नहीं होते हैं क्योंकि राज्य की पूरी स्थिति एक अप्राप्य स्थिति में जाती है।

अद्यतन: मैं राज्यों और मशीन स्थिर रखने की कोशिश कर रहा हूँ। चूंकि अनुरोध मशीनों और राज्यों से गुज़र जाएगा, अनुरोध स्वयं आवश्यक सभी मेटा डेटा स्टोर करेगा। इस मामले में सामान्य राज्य मशीन पैटर्न मदद नहीं करता है।

उत्तर

0

State Pattern अलग राज्य और संदर्भसंदर्भ राज्यों के पदानुक्रम को संग्रहीत कर सकता है और राज्य उप-वर्ग स्वयं ही इस पदानुक्रम से अनजान हैं। सभी अगर बयान समाप्त हो गए हैं क्योंकि प्रत्येक अनुभाग एक अलग राज्य उपclass में चला जाता है।

+0

मैंने राज्य का उपयोग करने की कोशिश की है लेकिन ऐसा डिज़ाइन के लिए काम नहीं कर रहा है। असल में मेरा प्रोग्राम प्रवाह मशीनों के बीच आगे और पीछे स्विच करता है। एक घटना की तरह मैं भीतरी मशीन में हूं लेकिन अगली घटना के लिए मुझे बाहरी मशीन में होना चाहिए। और यही वह बड़ी समस्या पैदा करता है। –

+0

आपको डिजाइन पैटर्न पर जीओएफ पुस्तक पढ़नी चाहिए। कार्यान्वयन अनुभाग में संबोधित राज्य संक्रमणों को लागू करना है। मैं इसे आपके लिए सारांशित कर दूंगा: राज्य संक्रमण पूरी तरह से संदर्भ या राज्य उप-वर्गों में लागू किया जा सकता है। आपको चुनना चाहिए कि प्रश्न पूछकर कहां कार्यान्वित करना है: क्या राज्यों की संख्या तय की गई है या अधिक जोड़ दी जाएगी? – user1168577

6

शायद एंड्रॉइड स्रोत कोड यह समझने के लिए उपयोगी हो सकता है कि यह कैसे करें? WiFi state machine here देखें ..

+0

धन्यवाद, यह मुझे कुछ स्पष्टता प्राप्त करने में मदद करता है। –

+0

आपका स्वागत है। मुझे हाल ही में एक ही समस्या है इसलिए मैं हाल ही में पढ़ रहा था। उम्मीद है कि दूसरों को यह उपयोगी भी मिलेगा;) – Ewoks