1. प्रॉक्सी पैटर्न क्या है

प्रॉक्सी पैटर्न एक संरचनात्मक डिज़ाइन पैटर्न है जो किसी विशेष वस्तु तक पहुंच नियंत्रित करने के लिए प्रॉक्सी के रूप में कार्य करता है। लक्ष्य वस्तु (जिसे प्रॉक्सी किया जा रहा है), प्रॉक्सी पैटर्न एक प्रॉक्सी वस्तु प्रदान करता है जिसके माध्यम से ग्राहक लक्ष्य वस्तु तक पहुंच सकते हैं, जिससे लक्ष्य वस्तु में अतिरिक्त कार्यक्षमता जोड़ी जा सकती है।

1.1 प्रॉक्सी पैटर्न की परिभाषा

प्रॉक्सी पैटर्न एक डिज़ाइन पैटर्न है जिसमें दो या दो से अधिक वस्तुएँ मिलकर काम करती हैं। एक वस्तु वास्तविक लक्ष्य वस्तु होती है, जो कोड किया जाता है, जबकि एक या एक से अधिक अन्य वस्तुएँ प्रॉक्सी वस्तुएँ के रूप में कार्य करती हैं। प्रॉक्सी वस्तुएँ लक्ष्य वस्तु तक पहुंच को रोकती हैं और लक्ष्य वस्तु तक का अप्रत्यक्ष तरीके से पहुंच प्रदान करती हैं।

1.2 प्रॉक्सी पैटर्न का उद्देश्य और लक्ष्य

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

2. प्रॉक्सी पैटर्न की विशेषताएँ और फायदे

प्रॉक्सी पैटर्न की निम्नलिखित विशेषताएँ और फायदे हैं:

  • यह लक्ष्य वस्तु की कार्यक्षमता को संशोधित किए बिना बढ़ा सकता है।
  • यह प्रॉक्सी वस्तु के माध्यम से लक्ष्य वस्तु तक पहुंच को नियंत्रित कर सकता है।
  • यह लक्ष्य वस्तु तक पहुंच से पहले या बाद में अतिरिक्त कार्यवाही कर सकता है।
  • यह आलसी लोडिंग को लागू कर सकता है, लक्ष्य वस्तु को केवल जब आवश्यक हो तब निर्मित करता है।

3. प्रॉक्सी पैटर्न के व्यावसायिक अनुप्रयोग के उदाहरण

प्रॉक्सी पैटर्न का व्यापक रूप से बहुत सारे अनुप्रयोग स्थितियों में उपयोग होता है। यहां कुछ सामान्य व्यावसायिक अनुप्रयोगों के उदाहरण हैं:

  • रिमोट प्रॉक्सी: स्थानीय रूप से नेटवर्क पर वस्तुओं तक पहुंच के लिए उपयोग किया जाता है।
  • वर्चुअल प्रॉक्सी: महंगे वस्तुओं को आवश्यकतानुसार बनाने के लिए उपयोग किया जाता है।
  • सिक्योरिटी प्रॉक्सी: वस्तुओं तक पहुंच को नियंत्रित करने के लिए उपयोग किया जाता है।
  • स्मार्ट रेफरेंस: वस्तुओं तक पहुंच के दौरान अतिरिक्त कार्यों को करने के लिए उपयोग किया जाता है, जैसे ऑब्जेक्ट गणना।

4.1 UML कक्ष आरेख

निम्नलिखित UML कक्ष आरेख में गोलंग में प्रॉक्सी पैटर्न है:

Golang Proxy Pattern

4.2 उदाहरण परिचय

मान लें हमारे पास एक इंटरफेस Subject है जो एक Request विधि की परिभाषा करता है। हमारे पास एक कॉन्क्रीट अंमलन क्लास RealSubject है, जो Subject इंटरफेस को अंमलता है। तब हम एक प्रॉक्सी क्लास Proxy बनाते हैं, जो एक RealSubject ऑब्जेक्ट को रखता है और वहीं Subject इंटरफेस को भी अंमलता है। Proxy क्लास की Request विधि में, हम RealSubject की Request विधि को बुलाने से पहले या बाद में कुछ अतिरिक्त कार्यवाही कर सकते हैं।

4.3 कार्यान्वयन कदम 1: प्रॉक्सी इंटरफेस की परिभाषा करें

सबसे पहले, हमें एक Subject इंटरफेस की परिभाषा करनी होगी, जिसमें एक Request विधि हो:

package main

type Subject interface {
    Request()
}

4.4 कार्यान्वयन कदम 2: लक्ष्य वस्तु का अंमलन करें

अगले, हम विशिष्ट लक्ष्य वस्तु RealSubject का अंमलन करते हैं, जो Subject इंटरफेस को अंमलता है:

package main

import "fmt"

type RealSubject struct {}

func (r *RealSubject) Request() {
    fmt.Println("RealSubject: Handling Request")
}

4.5 कार्यान्वयन कदम 3: प्रॉक्सी वस्तु का कार्यान्वयन करें

अगले, हम एक प्रॉक्सी वस्तु, Proxy, बनाते हैं, जो एक RealSubject ऑब्जेक्ट को रखती है और Subject इंटरफेस को अंमलता है। प्रॉक्सी की Request विधि में, हम RealSubject की Request विधि को बुलाने से पहले या बाद में कुछ अतिरिक्त कार्यवाही कर सकते हैं:

package main

import "fmt"

type Proxy struct {
    realSubject *RealSubject
}

func (p *Proxy) Request() {
    fmt.Println("Proxy: Pre-Request")
    
    if p.realSubject == nil {
        p.realSubject = &RealSubject{}
    }
    
    p.realSubject.Request()
    
    fmt.Println("Proxy: Post-Request")
}

4.6 कार्यान्वयन कदम 4: प्रॉक्सी वस्तु को आह्वान करना

आखिरकार, हम प्रॉक्सी वस्तु, Proxy, का उपयोग करके प्रॉक्सी ऑब्जेक्ट की विधियों को आह्वान कर सकते हैं:

package main

func main() {
    proxy := Proxy{}
    proxy.Request()
}

ऊपर दिए गए कोड को चलाने से निम्नलिखित आउटपुट उत्पन्न होगा:

Proxy: Pre-Request
RealSubject: Handling Request
Proxy: Post-Request

5.1 प्रॉक्सी पैटर्न और डेकोरेटर पैटर्न के बीच अंतर और कनेक्शन

प्रॉक्सी पैटर्न और डेकोरेटर पैटर्न, दोनों ही संरचनात्मक डिज़ाइन पैटर्न हैं, जिनमें एक लक्ष्य ऑब्जेक्ट और प्रॉक्सी/डेकोरेटर ऑब्जेक्ट शामिल होता है। हालांकि, इन दोनों के बीच कुछ अंतर हैं:

  • प्रॉक्सी पैटर्न सामान्यत: लक्ष्य ऑब्जेक्ट तक पहुँच नियंत्रण को शामिल करता है, जबकि डेकोरेटर पैटर्न अधिक तरीके से लक्ष्य ऑब्जेक्ट को विस्तारित करने पर ध्यान केंद्रित करता है।
  • प्रॉक्सी पैटर्न सामान्यत: लक्ष्य ऑब्जेक्ट से पहले या बाद में अतिरिक्त कार्यवाहियाँ करता है, जबकि डेकोरेटर पैटर्न लक्ष्य ऑब्जेक्ट पर डायनेमिक रूप से अतिरिक्त कार्यक्षमता जोड़ता है।

5.2 स्थायी प्रॉक्सी और गतिशील प्रॉक्सी के बीच तुलना

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

5.3 माइक्रोसर्विस में प्रॉक्सी पैटर्न का उपयोग

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