2011-02-16 8 views
7

लौटाएं मैं क्लाइंट से एक टीसीपी/आईपी सॉकेट के माध्यम से किसी सर्वर से कमांड पास करने के लिए कमांड पैटर्न का उपयोग कर रहा हूं। सर्वर कमांड ऑब्जेक्ट लेगा, इसे deserialize और फिर कमांड ऑब्जेक्ट पर execute() को कॉल करें। हालांकि, मुझे सॉकेट पर कॉलर को एक मान वापस करने की आवश्यकता है। क्या कमांड पैटर्न इसके लिए अनुमति देता है? यदि नहीं, तो क्या कोई काम है? मैंने विकिपीडिया पर लाइट स्विच उदाहरण देखा है, जो कि बहुत अच्छा है, लेकिन कोई वापसी मूल्य नहीं है। किसी भी सलाह की सराहना की।कमांड पैटर्न - एक मान

+0

क्या आप समझा सकते हैं कि आपको कॉलर को मूल्य वापस भेजने की आवश्यकता क्यों है? शायद कुछ और संदर्भ मदद करेंगे। – Ocelot20

+1

मैं पैटर्न में एक बड़ा आस्तिक हूँ। हालांकि, उन्हें केवल उन चीज़ों के लिए उपयोग किया जाना चाहिए जिन्हें वे डिजाइन किए गए थे। कमांड पैटर्न के मूल्य की मेरी धारणा आपके द्वारा वर्णित किए गए मिलान से मेल नहीं खाती है। क्या आप सोच सकते हैं कि आपके कार्यान्वयन में कमांड पैटर्न आपके लिए क्या खरीदता है और आप इसका उपयोग क्यों कर रहे हैं? – rfeak

+1

http://stackoverflow.com/questions/1154935/command-pattern-returning-status एक समान प्रश्न है – nos

उत्तर

4

आपके पास दूरस्थ सर्वर पर भेजे गए Command पर "execute()" विधि नहीं होनी चाहिए, यह विशेष रूप से जावा में कई तरीकों से खराब है। Command प्राप्तकर्ता को जो कार्रवाई करना चाहिए उसका प्रतिनिधित्व करना चाहिए। इस मामले में कुछ वस्तु पर एक विधि को कॉल करना है।

Command पैटर्न उन कार्रवाइयों के कार्यान्वयन के लिए किए गए कार्यों को लेने या लेने के लिए है। किए जाने वाले निर्देशों के एक सेट के बारे में अधिक सोचें।

जो आप वर्णन कर रहे हैं वह मूल रूप से एक अति-इंजीनियर आरपीसी कॉल तंत्र है। इस पहिये का पुन: आविष्कार न करें। मौजूदा आरपीसी तंत्र को देखता है, जावा दुनिया में से चुनने के लिए बहुत सारे विकल्प हैं। फिर आपको यह तय करने की आवश्यकता है कि आरपीसी तुल्यकालिक या असीमित है या नहीं।

REST आधारित एपीआई लोकप्रिय है और आरएमआई जैसी किसी मूल भाषा विशिष्ट तंत्र की तुलना में एपीआई के रूप में लंबे समय तक टिकेगा।

+0

अच्छा बिंदु। क्या आपको लगता है कि मेरी समस्या के संदर्भ में सॉकेट के विरोध में आरएमआई इस परिदृश्य के लिए एक अच्छा फिट होगा? आरएमआई मुझे स्टब्स देगी जिसे सीधे क्लाइंट नंबर द्वारा बुलाया जा सकता है? यह एक बहुत अच्छा दृष्टिकोण की तरह लगता है। पॉइंटर्स के लिए फिर से धन्यवाद। – Joeblackdev

+0

मैंने अभी पाया है कि आरएमआई एंड्रॉइड के साथ नहीं है। कोई अन्य सुझाव? धन्यवाद फिर से – Joeblackdev

+1

एक साधारण आरईएसटी आधारित एपीआई अब प्रचलित दिनों में प्रचलित है। और मेरा मतलब HTTP पर आरपीसी नहीं है, मेरा मतलब असली रीस्ट है। -> http://www.vertigrated.com/blog/2009/10/this-isnt-rest-this-is-rpc/ –

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