प्रॉक्सी पैटर्न

कंप्यूटर प्रोग्रामिंग में, प्रॉक्सी स्वरूप एक सॉफ्टवेयर डिजाइन स्वरूप है। प्रॉक्सी, अपने सबसे सामान्य रूप में, एक ऐसा वर्ग है जो किसी अन्य चीज़ के इंटरफ़ेस के रूप में कार्य करता है। प्रॉक्सी किसी भी चीज़ से इंटरफ़ेस कर सकता है: एक नेटवर्क संपर्क, मेमोरी में बड़ी वस्तु, फ़ाइल, या कुछ अन्य संसाधन जो महंगा या प्रतिलिपि करना असंभव है। संक्षेप में, प्रॉक्सी आवरण या एजेंट वस्तु है जिसे क्लाइंट द्वारा पर्दे के पीछे वास्तविक सेवारत वस्तु तक पहुँचने के लिए बुलाया जा रहा है। प्रॉक्सी का उपयोग केवल वास्तविक वस्तु को अग्रेषित (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) हो सकता है, या अतिरिक्त तर्क प्रदान कर सकता है। प्रॉक्सी में, अतिरिक्त कार्यक्षमता प्रदान की जा सकती है, उदाहरण के लिए कैशिंग जब वास्तविक वस्तु पर संचालन संसाधन गहन होते हैं, या वास्तविक वस्तु पर संचालन से पहले पूर्व नियम की जाँच की जाती है। क्लाइंट के लिए, प्रॉक्सी ऑब्जेक्ट का उपयोग वास्तविक ऑब्जेक्ट का उपयोग करने के समान होता है, क्योंकि दोनों ही इंटरफ़ेस को प्रयुक्त करते हैं।

अवलोकन
प्रॉक्सी डिजाइन स्वरूप तेईस प्रसिद्ध में से एक है डिजाइन स्वरूप्स यह वर्णन करता है कि लचीले और पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर को डिज़ाइन करने के लिए आवर्ती डिज़ाइन समस्याओं को कैसे हल किया जाए, अर्थात ऐसी वस्तुएँ जिन्हें प्रयुक्त करना, बदलना, परीक्षण करना और पुन: उपयोग करना आसान हो।

=== प्रॉक्सी डिज़ाइन स्वरूप किन समस्याओं को हल कर सकता है? ===


 * किसी वस्तु की पहुंच को नियंत्रित किया जाना चाहिए।
 * किसी वस्तु तक पहुँचने पर अतिरिक्त कार्यक्षमता प्रदान की जानी चाहिए।

संवेदनशील वस्तुओं तक पहुँचते समय, उदाहरण के लिए, यह जाँचना संभव होना चाहिए कि ग्राहकों के पास आवश्यक पहुँच अधिकार हैं।

प्रॉक्सी डिज़ाइन स्वरूप किस समाधान का वर्णन करता है?
अलग परिभाषित करें  उस पर आपत्ति करें
 * किसी और अन्य वस्तु के विकल्प के रूप में इस्तेमाल किया जा सकता है
 * इस विषय तक पहुंच को नियंत्रित करने के लिए अतिरिक्त कार्यक्षमता प्रयुक्त करता है।

यह एक के माध्यम से काम करना संभव बनाता है  किसी विषय तक पहुँचने पर अतिरिक्त कार्यक्षमता करने के लिए ऑब्जेक्ट। उदाहरण के लिए, किसी संवेदनशील वस्तु तक पहुँचने वाले ग्राहकों के पहुँच अधिकारों की जाँच करने के लिए।

किसी विषय के स्थानापन्न के रूप में कार्य करने के लिए, प्रॉक्सी को प्रयुक्त करना चाहिए  इंटरफेस। ग्राहक यह नहीं बता सकते कि वे किसी विषय या उसके प्रॉक्सी के साथ काम करते हैं या नहीं। नीचे यूएमएल क्लास और सीक्वेंस डायग्राम भी देखें।

यूएमएल वर्ग और अनुक्रम आरेख
उपरोक्त एकीकृत मॉडलिंग भाषा वर्ग आरेख में, वर्ग प्रयुक्त करता है  इंटरफ़ेस ताकि यह इसके विकल्प के रूप में कार्य कर सके   वस्तुओं। यह संदर्भ रखता है प्रतिस्थापित वस्तु के लिए ताकि वह इसे अनुरोधों को अग्रेषित कर सके .

अनुक्रम आरेख रन-टाइम इंटरैक्शन दिखाता है:  वस्तु के माध्यम से काम करता है   उस पर आपत्ति करें एक तक पहुंच को नियंत्रित करता है   वस्तु। इस उदाहरण में,   को अनुरोध अग्रेषित करता है , जो अनुरोध करता है।

वर्ग आरेख




रिमोट प्रॉक्सी
वितरित वस्तु संचार में, एक स्थानीय वस्तु दूरस्थ वस्तु का प्रतिनिधित्व करती है (वह जो अलग पता स्थान से संबंधित है)। स्थानीय वस्तु दूरस्थ वस्तु के लिए प्रॉक्सी है, और स्थानीय वस्तु पर विधि मंगलाचरण के परिणामस्वरूप दूरस्थ वस्तु पर दूरस्थ विधि आह्वान होता है। उदाहरण एक स्वचालित टेलर मशीन कार्यान्वयन होगा, जहां एटीएम बैंक जानकारी के लिए प्रॉक्सी ऑब्जेक्ट रख सकता है जो रिमोट सर्वर में उपस्थित है।

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

सुरक्षा प्रॉक्सी
एक्सेस अधिकारों के आधार पर संसाधन तक पहुंच को नियंत्रित करने के लिए सुरक्षा प्रॉक्सी का उपयोग किया जा सकता है।

सी #
उत्पादन क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!

टिप्पणियाँ:
 * एक प्रॉक्सी क्लाइंट को वास्तविक वस्तु के बारे में जानकारी छुपा सकता है।
 * एक प्रॉक्सी ऑन डिमांड लोडिंग जैसे अनुकूलन का प्रदर्शन कर सकता है।
 * एक प्रॉक्सी अतिरिक्त हाउसकीपिंग का काम कर सकता है जैसे ऑडिट कार्य।
 * प्रॉक्सी डिज़ाइन स्वरूप को सरोगेट डिज़ाइन स्वरूप के रूप में भी जाना जाता है।

क्रिस्टल
उत्पादन क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!

डेल्फी/ऑब्जेक्ट पास्कल
उपयोग

उत्पादन क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!

जावा
निम्न जावा (प्रोग्रामिंग भाषा) उदाहरण वर्चुअल प्रॉक्सी स्वरूप दिखाता है।  e> वर्ग का उपयोग दूरस्थ विधि तक पहुँचने के लिए किया जाता है।

उदाहरण पहले एक इंटरफ़ेस बनाता है जिसके विरुद्ध स्वरूप कक्षाएं बनाता है। इस इंटरफ़ेस में छवि प्रदर्शित करने के लिए केवल एक विधि है, जिसे कहा जाता है, जिसे इसे प्रयुक्त करने वाले सभी वर्गों द्वारा कोडित किया जाना है।

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

उत्पादन

जावास्क्रिप्ट
उत्पादन क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!

अधिक उन्नत प्रॉक्सी में शामिल हैं  ऑब्जेक्ट, जो गुणों तक पहुँचने जैसे मूलभूत कार्यों को रोक और फिर से परिभाषित कर सकता है। इस मामले में हैंडलर फ़ंक्शंस को कभी-कभी ट्रैप कहा जाता है।

पीएचपी
उत्पादन

पायथन
उत्पादन क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!

जंग
उत्पादन क्षमा करें, आपके ड्राइव करने के लिए कार बहुत छोटी है। कार चलाई गई है!

यह भी देखें

 * समग्र स्वरूप
 * डेकोरेटर स्वरूप
 * मंद आरंभीकरण

बाहरी संबंध

 * PerfectJPattern Open Source Project, Provides componentized implementation of the Proxy Pattern in Java
 * Proxy Design Pattern
 * Proxy pattern description from the Portland Pattern Repository
 * Proxy Design Pattern
 * Proxy pattern description from the Portland Pattern Repository
 * Proxy pattern description from the Portland Pattern Repository