java - Void value as return parameter -
मेरे पास यह इंटरफ़ेस है:
सार्वजनिक इंटरफ़ेस कमांड & lt; T & gt; {टी निष्पादन (स्ट्रिंग ... आर्ग्स); }
यह अधिकांश उपयोगों के लिए ठीक काम करता है लेकिन जब मैं एक कमांड का मॉडल करने की कोशिश करता हूं जिस पर केवल साइड इफेक्ट होते हैं (उदा। बिना वापसी मान) मैं लिखने के लिए परीक्षा देता हूं:
सार्वजनिक वर्ग SideEffectCommand कमांड & lt; शून्य & gt; {@ ओवरराइड पब्लिक व्हॉयड एक्जिक्यूट (स्ट्रिंग ... आर्ग्स) {वापसी नल; // ठीक है ठीक है? }}
क्या यह एक आम समस्या है? आदेश
मॉडल के लिए सर्वोत्तम प्रथाएं हैं?
मैंने इस एडाप्टर के साथ कोशिश की है लेकिन मुझे लगता है कि यह कई लोगों के लिए इष्टतम नहीं है कारण:
सार्वजनिक अमूर्त वर्ग VoidCommand का आदेश कमांड & lt; शून्य & gt; {@ ओवरराइड पब्लिक व्हॉइड एक्जिक्यूट (स्ट्रिंग ... एल्ग्स) {execute2 (आर्ग्स); वापसी नल; } सार्वजनिक सार शून्य निष्पादित 2 (स्ट्रिंग ... आर्ग्स); }
यहां बहु-विश्वव्यापी कार्यान्वयन का सर्वोत्तम है।
< Pre> // जब किसी क्लाइंट को एक कमांड के रिटर्न वैल्यू के बारे में ध्यान नहीं दिया जाता है तो जेनेरिक इंटरफ़ेस। सार्वजनिक इंटरफ़ेस कमांड {// इंटरफ़ेस खुद स्ट्रिंग लेते हैं [] बल्कि स्ट्रिंग से 1 ... तर्क, क्योंकि अन्यथा // एबर्ट कॉमांड का कार्यान्वयन & lt; T & gt; // अधिक जटिल हो जाएगा सार्वजनिक शून्य निष्पादित (स्ट्रिंग [] तर्क); } // क्लाइंट के लिए इंटरफ़ेस जो कि कमांड के // वापसी मूल्य का उपयोग करने की आवश्यकता होती है। सार्वजनिक इंटरफेस ValuedCommand & lt; T & gt; कमान {सार्वजनिक टी मूल्यांकन (स्ट्रिंग [] तर्कों को बढ़ाता है); } // वैकल्पिक, लेकिन उपयोगी है अगर आपके अधिकतम आदेश ValuedCommands हैं सार्वजनिक अमूर्त वर्ग AbstractCommand & lt; T & gt; ValuedCommand & lt; T & gt; लागू करता है {सार्वजनिक शून्य निष्पादित (स्ट्रिंग [] तर्क) {मूल्यांकन (तर्क); }} // सिंगलटन कक्षा उपयोगिता के तरीकों के साथ। सार्वजनिक वर्ग कमांड {निजी कमांड () {} // सिंगलटन क्लास। // ये उपयोगी होते हैं यदि आपको वर्गल कॉलिंग शैली पसंद है सार्वजनिक स्थिर शून्य निष्पादित (कमांड सीएमडी, स्ट्रिंग ... तर्क) {cmd.execute (तर्क); } सार्वजनिक स्थिर & lt; T & gt; शून्य निष्पादित (मूल्यवान कॉमांड & lt; T & gt; सीएमडी, स्ट्रिंग ... तर्क) {वापसी cmd.evaluate (तर्क); } // उपयोगी यदि आपके पास कोड है जिसके लिए एक मूल्यवान कॉमांड & lt;? & Gt; // लेकिन आपके पास केवल सादे कमांड है सार्वजनिक स्थिर मूल्यवान कॉमांड एंड लेफ्टिनेंट;? & Gt; AsValuedCommand (कमांड सीएमडी) {नई VoidCommand वापसी (सीएमडी); } प्राइवेट स्टैटिक क्लास VoidCommand AbstractCommand और lt; शून्य और gt; {निजी अंतिम कमांड सीएमडी; सार्वजनिक VoidCommand (कमान वास्तविक) {सीएमडी = वास्तविक; } सार्वजनिक शून्य मूल्यांकन (स्ट्रिंग [] तर्क) {cmd.execute (तर्क); वापसी नल; }}}
इस कार्यान्वयन के साथ, ग्राहक एक कमांड
के बारे में बात कर सकते हैं यदि उन्हें रिटर्न वैल्यू, और ValuedCommand & lt; T & gt के बारे में परवाह नहीं है ;
यदि एक कमांड की ज़रूरत होती है जो एक निश्चित मान देता है।
एक ही कारण के बारे में शून्य
का उपयोग करने के साथ सीधे नहीं है सभी भद्दा वापस रिक्त;
स्टेटमेंट जो आपको डालने के लिए मजबूर हो जाएंगे।
Comments
Post a Comment