मुझे देखने के लिए कुछ जावा कोड दिए गए हैं, जो एक कार रेस का अनुकरण करता है, जिसमें एक मूल राज्य मशीन का कार्यान्वयन शामिल है। यह एक शास्त्रीय कंप्यूटर विज्ञान राज्य मशीन नहीं है, लेकिन केवल एक वस्तु है जिसमें कई राज्य हो सकते हैं, और गणना की एक श्रृंखला के आधार पर अपने राज्यों के बीच स्विच कर सकते हैं।
बस समस्या का वर्णन करने के लिए, मुझे एक कार वर्ग मिला है, एक नेस्टेड एनम वर्ग के साथ जो कार की स्थिति के लिए कुछ स्थिरांक को परिभाषित करता है (जैसे कि OFF, IDLE, DRIVE, REVERSE, आदि)। इसी कार क्लास में मेरे पास एक अपडेट फ़ंक्शन है, जिसमें मूल रूप से एक बड़े स्विच स्टेटमेंट होते हैं जो कारों की वर्तमान स्थिति पर स्विच करते हैं, कुछ गणना करते हैं और फिर कारों की स्थिति को बदलते हैं।
जहाँ तक मैं देख सकता हूँ, कार्स राज्य केवल अपनी कक्षा के भीतर उपयोग किया जाता है।
मेरा प्रश्न यह है कि क्या यह ऊपर वर्णित प्रकृति की राज्य मशीन के कार्यान्वयन से निपटने का सबसे अच्छा तरीका है? यह सबसे स्पष्ट समाधान की तरह ध्वनि करता है, लेकिन अतीत में मैंने हमेशा सुना है कि "स्विच स्टेटमेंट खराब हैं"।
मुख्य समस्या जो मैं यहां देख सकता हूं, वह यह है कि स्विच स्टेटमेंट संभवतः बहुत बड़ी हो सकती है क्योंकि हम अधिक स्टेट्स जोड़ते हैं (यदि आवश्यक समझा जाता है) और कोड अनपेक्षित और बनाए रखने में कठिन हो सकता है।
इस समस्या का एक बेहतर समाधान क्या होगा?
object.state = object.function(object.state);