मैं कुछ कोड (जावा) की समीक्षा कर रहा हूं और व्यवसाय तर्क प्रवाह चार्ट के आधार पर परिवर्तन कर रहा हूं। वर्तमान कोड अगर बड़ी संख्या में बयान के आधार पर निर्भर करता है - जो कुछ मैं कोशिश करना चाहता हूं और उससे दूर जाना चाहता हूं। मैं पॉलिमॉर्फिज्म के बारे में पढ़ रहा हूं और अपने सिर को लपेटने की कोशिश कर रहा हूं कि यह मेरी स्थिति में कैसे लागू हो। मैं इसे एक स्तर के सशर्त के लिए काम कर सकता हूं, लेकिन इसे कई सशर्त स्तरों में आगे बढ़ाने के लिए संघर्ष कर रहा हूं। कोड को रन टाइम पर निष्पादित किया जाएगा, इस 'तर्क' विधि को पिछले चरण से चर पारित किया जा रहा है।नेस्टेड से बचें यदि अन्य/स्विच - जावा
समेकित उदाहरण: हमारे पास 2 चिड़ियाघर, 'चिड़ियाघर' और 'चिड़ियाघर' और 'होम' है। इनमें से प्रत्येक 'प्लेस' है। प्रत्येक चिड़ियाघर में हमारे पास 4 'स्थान', 'उत्तर', 'दक्षिण', 'पूर्व' और 'पश्चिम' हैं। 'होम' में केवल एक स्थान है। हम किसी व्यक्ति को 'गंतव्य' असाइन करना चाहते हैं जहां उन्हें कुछ चर के आधार पर जाना चाहिए। ये चर हैं: 'प्लेस', जो हमारे स्थानों से संबंधित है (चिड़ियाघर ए, चिड़ियाघर बी, होम)। 'दिशा', जो हमारे स्थानों से संबंधित है, (एन, एस, ई, डब्ल्यू)। फ्लो चार्ट:
|----- | 'HOME'
|Place?| ----- > *destination = 'home'*
|----- |
Zoo A | Zoo B
|---------------|----------------------------------------|
|----------| |----------|
|Direction?| |Direction?|
|----------| |----------|
| North | North
----------- *destination = 'Zoo A North' ----------- *destination = 'Zoo B North'
| East | East
----------- *destination = 'Zoo A East' ----------- *destination = 'Zoo B East'
| South | South
----------- *destination = 'Zoo A South' ----------- *destination = 'Zoo B South'
| West | West
----------- *destination = 'Zoo A West' ----------- *destination = 'Zoo B West'
तो व्यक्ति एक्स चिड़ियाघर एक की जगह और दक्षिण की एक दिशा है, तो वे की एक गंतव्य होना चाहिए 'चिड़ियाघर एक दक्षिण'
मैं कोड है कि वर्तमान में बहुत बदसूरत है का उपयोग कर यदि बयान:
if(Place = 'HOME')
destination = 'HOME'
if(Place = 'Zoo A')
if(Direction = North)
destination = 'Zoo A North')
if(Direct = East)
destination = 'Zoo A East')
...
if(Place = 'Zoo B')
if(Direction = North)
destination = 'Zoo B North')
if(Direct = East)
destination = 'Zoo B East')
...
मैं इसे ईएनईएस के रूप में चर के साथ नेस्टेड स्विच में बदल सकता हूं। लेकिन मैं अगर - अन्य/स्विच निर्भरता से बचने की कोशिश कर रहा हूं क्योंकि इसमें इसमें गिरने की बुरी आदत है। मैंने प्लेस क्लास बनाने के लिए फैक्ट्री डिज़ाइन का उपयोग करने के साथ प्रयोग किया, फिर प्रत्येक स्थान और गंतव्य पर पॉलीमोर्फिज्म का उपयोग किया लेकिन यह मेरे सिर में अत्यधिक जटिल हो गया। क्या यह भी/स्विच से दूर जाने लायक है? क्या मैं बस इसे इंजीनियर करने की कोशिश कर रहा हूं?
कैसे तर्क से निपटने के लिए पर कोई सुझाव इस तरह बहती है? धन्यवाद
मैं आपके उदाहरण में जो करने की कोशिश कर रहा हूं उस पर पूरी तरह स्पष्ट नहीं हूं। क्या "प्लेस" और "डायरेक्शन" स्ट्रिंग्स या किसी अन्य प्रकार की वस्तुएं हैं? किसी भी तरह से, आपके 'चिड़ियाघर' वर्ग में 'goNorth() ', आदि विधियों को बनाने का एक सरल उदाहरण हो सकता है। मुझे पूरी तरह से यकीन नहीं है कि यह आपकी समस्या का समाधान करेगा, हालांकि, क्योंकि आप जो करने की कोशिश कर रहे हैं उस पर मैं पूरी तरह से स्पष्ट नहीं हूं। –
@ कोड-गुरु - मान लें कि वे सादगी के लिए सभी तार हैं। मैं जो करने की कोशिश कर रहा हूं वह प्रवाह के शीर्ष पर शुरू होता है और चर (दिशा और स्थान) के आधार पर अंतिम 'गंतव्य' के साथ समाप्त होता है। लेकिन सबसे प्रबंधनीय और आसान बनाए रखने के तरीके में – NathanS