प्रॉक्सी पैटर्न: Difference between revisions
(Created page with "कंप्यूटर प्रोग्रामिंग में, प्रॉक्सी पैटर्न एक सॉफ्टवेयर डिजाइ...") |
No edit summary |
||
Line 61: | Line 61: | ||
== उदाहरण == | == उदाहरण == | ||
{{Wikibooks|Computer Science Design Patterns|Proxy|Proxy implementations in various languages}} | {{Wikibooks|Computer Science Design Patterns|Proxy|Proxy implementations in various languages}} | ||
=== सी # === | === सी # === | ||
(कोड) | |||
उत्पादन | उत्पादन | ||
क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। | क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। | ||
Line 134: | Line 76: | ||
=== सी ++ === | === सी ++ === | ||
(कोड) | |||
=== क्रिस्टल === | === क्रिस्टल === | ||
(कोड) | |||
उत्पादन | उत्पादन | ||
Line 227: | Line 87: | ||
=== डेल्फी/ऑब्जेक्ट पास्कल === | === डेल्फी/ऑब्जेक्ट पास्कल === | ||
(कोड) | |||
उपयोग | उपयोग | ||
DesignPattern.Proxy 'DesignPattern.Proxy.pas' में; | DesignPattern.Proxy 'DesignPattern.Proxy.pas' में; | ||
Line 350: | Line 108: | ||
प्रॉक्सी वर्ग <code>ProxyImage</code> वास्तविक छवि वर्ग की तुलना में किसी अन्य सिस्टम पर चल रहा है और वास्तविक छवि का प्रतिनिधित्व कर सकता है <code>RealImage</code> वहाँ। छवि जानकारी डिस्क से एक्सेस की जाती है। प्रॉक्सी पैटर्न का उपयोग करते हुए, का कोड <code>ProxyImage</code> मेमोरी-सेविंग तरीके से अन्य सिस्टम से इसे एक्सेस करते हुए, छवि के कई लोडिंग से बचा जाता है। इस उदाहरण में प्रदर्शित आलसी लोडिंग प्रॉक्सी पैटर्न का हिस्सा नहीं है, बल्कि प्रॉक्सी के उपयोग से संभव हुआ एक लाभ है। | प्रॉक्सी वर्ग <code>ProxyImage</code> वास्तविक छवि वर्ग की तुलना में किसी अन्य सिस्टम पर चल रहा है और वास्तविक छवि का प्रतिनिधित्व कर सकता है <code>RealImage</code> वहाँ। छवि जानकारी डिस्क से एक्सेस की जाती है। प्रॉक्सी पैटर्न का उपयोग करते हुए, का कोड <code>ProxyImage</code> मेमोरी-सेविंग तरीके से अन्य सिस्टम से इसे एक्सेस करते हुए, छवि के कई लोडिंग से बचा जाता है। इस उदाहरण में प्रदर्शित आलसी लोडिंग प्रॉक्सी पैटर्न का हिस्सा नहीं है, बल्कि प्रॉक्सी के उपयोग से संभव हुआ एक लाभ है। | ||
(कोड) | |||
उत्पादन | उत्पादन | ||
Line 435: | Line 122: | ||
=== जावास्क्रिप्ट === | === जावास्क्रिप्ट === | ||
(कोड) | |||
उत्पादन | उत्पादन | ||
Line 485: | Line 133: | ||
=== पीएचपी === | === पीएचपी === | ||
(कोड) | |||
उत्पादन | उत्पादन | ||
Line 565: | Line 146: | ||
===पायथन=== | ===पायथन=== | ||
(कोड) | |||
उत्पादन | उत्पादन | ||
Line 619: | Line 154: | ||
=== जंग === | === जंग === | ||
(कोड) | |||
उत्पादन | उत्पादन |
Revision as of 12:01, 3 March 2023
कंप्यूटर प्रोग्रामिंग में, प्रॉक्सी पैटर्न एक सॉफ्टवेयर डिजाइन पैटर्न है। एक प्रॉक्सी, अपने सबसे सामान्य रूप में, एक ऐसा वर्ग है जो किसी अन्य चीज़ के इंटरफ़ेस के रूप में कार्य करता है। प्रॉक्सी किसी भी चीज़ से इंटरफ़ेस कर सकता है: एक नेटवर्क कनेक्शन, मेमोरी में एक बड़ी वस्तु, एक फ़ाइल, या कुछ अन्य संसाधन जो महंगा या डुप्लिकेट करना असंभव है। संक्षेप में, एक प्रॉक्सी एक आवरण या एजेंट वस्तु है जिसे क्लाइंट द्वारा पर्दे के पीछे वास्तविक सेवारत वस्तु तक पहुँचने के लिए बुलाया जा रहा है। प्रॉक्सी का उपयोग केवल वास्तविक वस्तु को अग्रेषित (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) हो सकता है, या अतिरिक्त तर्क प्रदान कर सकता है। प्रॉक्सी में, अतिरिक्त कार्यक्षमता प्रदान की जा सकती है, उदाहरण के लिए कैशिंग जब वास्तविक वस्तु पर संचालन संसाधन गहन होते हैं, या वास्तविक वस्तु पर संचालन से पहले पूर्व शर्त की जाँच की जाती है। क्लाइंट के लिए, प्रॉक्सी ऑब्जेक्ट का उपयोग वास्तविक ऑब्जेक्ट का उपयोग करने के समान होता है, क्योंकि दोनों एक ही इंटरफ़ेस को लागू करते हैं।
सिंहावलोकन
प्रॉक्सी
[1]
डिजाइन पैटर्न तेईस प्रसिद्ध में से एक है डिजाइन पैटर्न्स यह वर्णन करता है कि लचीले और पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर को डिज़ाइन करने के लिए आवर्ती डिज़ाइन समस्याओं को कैसे हल किया जाए, अर्थात ऐसी वस्तुएँ जिन्हें लागू करना, बदलना, परीक्षण करना और पुन: उपयोग करना आसान हो।
प्रॉक्सी डिज़ाइन पैटर्न किन समस्याओं को हल कर सकता है? [2]
- किसी वस्तु की पहुंच को नियंत्रित किया जाना चाहिए।
- किसी वस्तु तक पहुँचने पर अतिरिक्त कार्यक्षमता प्रदान की जानी चाहिए।
संवेदनशील वस्तुओं तक पहुँचते समय, उदाहरण के लिए, यह जाँचना संभव होना चाहिए कि ग्राहकों के पास आवश्यक पहुँच अधिकार हैं।
प्रॉक्सी डिज़ाइन पैटर्न किस समाधान का वर्णन करता है?
अलग परिभाषित करें Proxy
उस पर आपत्ति करें
- किसी अन्य वस्तु के विकल्प के रूप में इस्तेमाल किया जा सकता है (
Subject
) और - इस विषय तक पहुंच को नियंत्रित करने के लिए अतिरिक्त कार्यक्षमता लागू करता है।
यह एक के माध्यम से काम करना संभव बनाता है Proxy
किसी विषय तक पहुँचने पर अतिरिक्त कार्यक्षमता करने के लिए ऑब्जेक्ट। उदाहरण के लिए, किसी संवेदनशील वस्तु तक पहुँचने वाले ग्राहकों के पहुँच अधिकारों की जाँच करने के लिए।
किसी विषय के स्थानापन्न के रूप में कार्य करने के लिए, प्रॉक्सी को लागू करना चाहिए Subject
इंटरफेस।
ग्राहक यह नहीं बता सकते कि वे किसी विषय या उसके प्रॉक्सी के साथ काम करते हैं या नहीं।
नीचे यूएमएल क्लास और सीक्वेंस डायग्राम भी देखें।
संरचना
यूएमएल वर्ग और अनुक्रम आरेख
उपरोक्त एकीकृत मॉडलिंग भाषा वर्ग आरेख में,
Proxy
वर्ग लागू करता हैSubject
इंटरफ़ेस ताकि यह इसके विकल्प के रूप में कार्य कर सकेSubject
वस्तुओं। यह एक संदर्भ रखता है (realSubject
)
प्रतिस्थापित वस्तु के लिए (RealSubject
) ताकि वह इसे अनुरोधों को अग्रेषित कर सके
(realSubject.operation()
).
अनुक्रम आरेख
रन-टाइम इंटरैक्शन दिखाता है: Client
ई> वस्तु
ए के माध्यम से काम करता है Proxy
उस पर आपत्ति करें
ए तक पहुंच को नियंत्रित करता है RealSubject
वस्तु।
इस उदाहरण में, Proxy
को अनुरोध अग्रेषित करता है RealSubject
, जो अनुरोध करता है।
वर्ग आरेख
संभावित उपयोग परिदृश्य
रिमोट प्रॉक्सी
वितरित वस्तु संचार में, एक स्थानीय वस्तु एक दूरस्थ वस्तु का प्रतिनिधित्व करती है (वह जो एक अलग पता स्थान से संबंधित है)। स्थानीय वस्तु दूरस्थ वस्तु के लिए एक प्रॉक्सी है, और स्थानीय वस्तु पर विधि मंगलाचरण के परिणामस्वरूप दूरस्थ वस्तु पर दूरस्थ विधि मंगलाचरण होता है। एक उदाहरण एक स्वचालित टेलर मशीन कार्यान्वयन होगा, जहां एटीएम बैंक जानकारी के लिए प्रॉक्सी ऑब्जेक्ट रख सकता है जो रिमोट सर्वर में मौजूद है।
वर्चुअल प्रॉक्सी
एक जटिल या भारी वस्तु के स्थान पर, कुछ मामलों में कंकाल का प्रतिनिधित्व फायदेमंद हो सकता है। जब एक अंतर्निहित छवि आकार में बड़ी होती है, तो इसे वर्चुअल प्रॉक्सी ऑब्जेक्ट का उपयोग करके प्रदर्शित किया जा सकता है, वास्तविक वस्तु को मांग पर लोड किया जा सकता है।
सुरक्षा प्रॉक्सी
एक्सेस अधिकारों के आधार पर संसाधन तक पहुंच को नियंत्रित करने के लिए एक सुरक्षा प्रॉक्सी का उपयोग किया जा सकता है।
उदाहरण
सी #
(कोड) उत्पादन
क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!
टिप्पणियाँ:
- एक प्रॉक्सी क्लाइंट को वास्तविक वस्तु के बारे में जानकारी छुपा सकता है।
- एक प्रॉक्सी ऑन डिमांड लोडिंग जैसे अनुकूलन का प्रदर्शन कर सकता है।
- एक प्रॉक्सी अतिरिक्त हाउसकीपिंग का काम कर सकता है जैसे ऑडिट कार्य।
- प्रॉक्सी डिज़ाइन पैटर्न को सरोगेट डिज़ाइन पैटर्न के रूप में भी जाना जाता है।
सी ++
(कोड)
क्रिस्टल
(कोड)
उत्पादन
क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!
डेल्फी/ऑब्जेक्ट पास्कल
(कोड)
उपयोग
DesignPattern.Proxy 'DesignPattern.Proxy.pas' में;
शुरू
TProxyCar.New (TDriver.New (16))। ड्राइवकार; TProxyCar.New (TDriver.New (25))। ड्राइवकार;
अंत। </वाक्यविन्यास हाइलाइट>
उत्पादन
क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!
जावा
निम्न जावा (प्रोग्रामिंग भाषा) उदाहरण वर्चुअल प्रॉक्सी पैटर्न दिखाता है। ProxyImage
e> वर्ग का उपयोग दूरस्थ विधि तक पहुँचने के लिए किया जाता है।
उदाहरण पहले एक इंटरफ़ेस बनाता है जिसके विरुद्ध पैटर्न कक्षाएं बनाता है। इस इंटरफ़ेस में छवि प्रदर्शित करने के लिए केवल एक विधि है, जिसे कहा जाता है displayImage()
, जिसे इसे लागू करने वाले सभी वर्गों द्वारा कोडित किया जाना है।
प्रॉक्सी वर्ग ProxyImage
वास्तविक छवि वर्ग की तुलना में किसी अन्य सिस्टम पर चल रहा है और वास्तविक छवि का प्रतिनिधित्व कर सकता है RealImage
वहाँ। छवि जानकारी डिस्क से एक्सेस की जाती है। प्रॉक्सी पैटर्न का उपयोग करते हुए, का कोड ProxyImage
मेमोरी-सेविंग तरीके से अन्य सिस्टम से इसे एक्सेस करते हुए, छवि के कई लोडिंग से बचा जाता है। इस उदाहरण में प्रदर्शित आलसी लोडिंग प्रॉक्सी पैटर्न का हिस्सा नहीं है, बल्कि प्रॉक्सी के उपयोग से संभव हुआ एक लाभ है।
(कोड)
उत्पादन
लोड हो रहा है HiRes_10MB_Photo1 HiRes_10MB_Photo1 प्रदर्शित कर रहा है HiRes_10MB_Photo1 प्रदर्शित कर रहा है लोड हो रहा है HiRes_10MB_Photo2 HiRes_10MB_Photo2 प्रदर्शित कर रहा है HiRes_10MB_Photo2 प्रदर्शित कर रहा है HiRes_10MB_Photo1 प्रदर्शित कर रहा है
जावास्क्रिप्ट
(कोड)
उत्पादन
क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!
अधिक उन्नत प्रॉक्सी में शामिल हैं Proxy
ऑब्जेक्ट, जो गुणों तक पहुँचने जैसे मूलभूत कार्यों को रोक और फिर से परिभाषित कर सकता है। इस मामले में हैंडलर फ़ंक्शंस को कभी-कभी ट्रैप कहा जाता है।[4]
पीएचपी
(कोड)
उत्पादन
लोड हो रहा है HiRes_10MB_Photo1 HiRes_10MB_Photo1 प्रदर्शित कर रहा है HiRes_10MB_Photo1 प्रदर्शित कर रहा है लोड हो रहा है HiRes_10MB_Photo2 HiRes_10MB_Photo2 प्रदर्शित कर रहा है HiRes_10MB_Photo2 प्रदर्शित कर रहा है HiRes_10MB_Photo1 प्रदर्शित कर रहा है
पायथन
(कोड)
उत्पादन
क्षमा करें, ड्राइवर ड्राइव करने के लिए बहुत छोटा है। कार चलाई गई है!
जंग
(कोड)
उत्पादन
क्षमा करें, आपके ड्राइव करने के लिए कार बहुत छोटी है। कार चलाई गई है!
यह भी देखें
संदर्भ
- ↑ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley. pp. 207ff. ISBN 0-201-63361-2.
{{cite book}}
: CS1 maint: multiple names: authors list (link) - ↑ "The Proxy design pattern - Problem, Solution, and Applicability". w3sDesign.com. Retrieved 2017-08-12.
- ↑ "The Proxy design pattern - Structure and Collaboration". w3sDesign.com. Retrieved 2017-08-12.
- ↑ "Proxy - JavaScript | MDN". developer.mozilla.org. Retrieved 21 January 2022.
बाहरी संबंध
- Geary, David (February 22, 2002). "Take control with the Proxy design pattern". JavaWorld. Retrieved 2020-07-20.
- PerfectJPattern Open Source Project, Provides componentized implementation of the Proxy Pattern in Java
- Adapter vs. Proxy vs. Facade Pattern Comparison at the Wayback Machine (archived 2012-03-11)
- Proxy Design Pattern
- Proxy pattern C++ implementation example at the Wayback Machine (archived 2014-10-19)
- Proxy pattern description from the Portland Pattern Repository