2010-09-22 3 views
5

ऐसा लगता है कि प्रॉक्सी और एडाप्टर पैटर्न के बीच समानताएं हैं?प्रॉक्सी पैटर्न और एडाप्टर पैटर्न के बीच मतभेद?

क्या कोई भी बता सकता है कि मतभेद क्या हैं? हमें दोनों की आवश्यकता क्यों है? किस समस्या में हमें केवल प्रॉक्सी का उपयोग करना चाहिए और किसी अन्य को .NET उदाहरण से नहीं करना चाहिए?

धन्यवाद

उत्तर

7

प्रॉक्सी आम तौर पर निम्न परिदृश्यों के लिए उपयोग किया जाता है:

  • अंतर्निहित 'असली' वस्तु बनाने के लिए महंगा है। तब आपके पास प्रॉक्सी बनने के दौरान प्लेसहोल्डर हो (एक बड़ी छवि डाउनलोड करते समय एक प्रोग्रेसबार आइकन एक सामान्य उदाहरण है)। आलसी लोडिंग एक और विशिष्ट उदाहरण है। विचार यह है कि हम नहीं जानते कि उपयोगकर्ता कभी भी 'विवरण' फलक पर क्लिक करेगा या नहीं, इसलिए जब तक वह वास्तव में क्लिक नहीं करता है तब तक हम लोडिंग को रोक देंगे या सिस्टम निष्क्रिय है।
  • आप प्रॉक्सी के भीतर 'असली' ऑब्जेक्ट के कुछ या सभी सदस्यों तक पहुंच (SecurityProxy) को नियंत्रित करना चाहते हैं।

एडाप्टर एक और भूमिका निभाते हैं - वे दो वर्गों के बीच अंतर को पुल करते हैं जिनके संबंध नहीं हैं। एडाप्टर दोनों ऑब्जेक्ट्स के रूप में कार्य कर सकता है। इसका मुख्य रूप से उपयोग किया जाता है जब किसी को विरासत प्रणाली (या उस मामले के लिए तृतीय पक्ष ढांचे) के साथ एकीकृत करना होता है जहां एपीआई को बदलना संभव नहीं होता है।

आशा है कि इससे मदद मिलती है!

16

एक प्रॉक्सी उस वस्तु के समान सटीक व्यवहार को उजागर करता है जैसा वह छुपाता है। एक प्रॉक्सी आमतौर पर रिमोट ऑब्जेक्ट से संपर्क करने के लिए उपयोग किया जाता है बिना यह जानने के लिए कि इसका संपर्क कैसे किया जाए। एक उदाहरण एक डब्ल्यूसीएफ सेवा है, आप एक प्रॉक्सी में सेवा तक पहुंचने को समाहित कर सकते हैं जो डब्ल्यूसीएफ सेवा के समान सटीक इंटरफ़ेस का खुलासा करता है, लेकिन कार्यान्वयन विवरण को दूर करता है जैसे कि चैनफेलैक्टरी का उपयोग करना और फाउल्टेक्सप्शन इत्यादि को संभालना आदि ... ऐसा लगता है कि ग्राहक बात कर रहा है स्थानीय रूप से डब्ल्यूसीएफ सेवा के लिए।

एक एडाप्टर भी एक अंतर्निहित वस्तु को छुपाता है, लेकिन यह आपके द्वारा एक्सचेंज किए गए डेटा को सही स्वरूप और अंतर्निहित वस्तु द्वारा उपयोग की जाने वाली सामग्री में बदल देता है। एक उदाहरण वास्तव में एक विरासत प्रणाली है, जैसे गोब्लिन कहते हैं। आप विरासत प्रणाली से बात करने की जटिलता को समाहित करते हैं (शायद यह एक चिपचिपा या CRUDY एपीआई का उपयोग करता है और आप इसे एक मोटे अनाज वाले ऑपरेशन के पीछे छिपाना चाहते हैं) अपने ग्राहकों को विरासत प्रणाली से बात करने का एक आसान तरीका प्रदान करने के लिए एडाप्टर में।

इस तरह मैं इसे कम से कम समझता हूं।

संपादित करें: वैसे, मुझे व्यक्तिगत रूप से लगता है कि आपको डिज़ाइन पैटर्न नामों को अंत-सब-डू-सब के रूप में देखना नहीं है। आप जो हासिल करना चाहते हैं उसके आधार पर सही पैटर्न चुनें और जो कुछ भी आप चाहते हैं उसे कॉल करें।