1.1 परिभाषा
एडाप्टर पैटर्न संरचनात्मक डिज़ाइन पैटर्न है जो किसी क्लास का इंटरफ़ेस को उसके क्लाइंट द्वारा अपेक्षित दूसरे इंटरफ़ेस में रूपांतरित करने की अनुमति देता है। एडाप्टर पैटर्न इसकी संभावना बनाता है कि विपरीत इंटरफ़ेस के कारण साथ काम नहीं कर सकने वाले क्लासें में सहयोग किया जा सके।
1.2 उद्देश्य और प्रभाव
एडाप्टर पैटर्न का मुख्य उद्देश्य दो अनुकूल इंटरफ़ेस के बीच संगतता समस्या को हल करना है। एडाप्टर क्लास का उपयोग करके इसका यह संभव होता है कि असंगत क्लासें विशिष्ट कार्यक्षमता को कार्यान्वित करने के लिए सहयोग करें।
1.3 एडाप्टर पैटर्न के मूल सिद्धांत
- जब किसी इंटरफ़ेस को दूसरे इंटरफ़ेस में रूपांतरित करना हो, तो एडाप्टर पैटर्न मौजूदा क्लासों के साथ निपटने के लिए उपयुक्त होता है।
- एडाप्टर पैटर्न मूल क्लास को संशोधित करने की बजाय एक एडाप्टर क्लास बनाकर इंटरफ़ेस परिवर्तन को कार्यान्वित करता है।
- एडाप्टर पैटर्न को क्लास एडाप्टर या ऑब्जेक्ट एडाप्टर के माध्यम से कार्यान्वित किया जा सकता है।
2. एडाप्टर पैटर्न की विशेषताएँ और फायदे
एडाप्टर पैटर्न की निम्नलिखित विशेषताएँ और फायदे हैं:
- इंटरफ़ेस रूपांतरण के लिए समाधान प्रदान करता है, जिससे असंगत क्लासें साथ मिलकर काम कर सकती हैं।
- यह सिस्टम की लचीलापन और पैम्पसिलिटी को बढ़ा सकता है।
- इसमें मौजूदा क्लासों का पुनर्उपयोग कर सकता है, कोड की डुप्लिकेशन और विकास लागत को कम करता है।
- यह एक सुसंगत डिज़ाइन समाधान प्रदान करता है, जिससे सिस्टम और और लचीला और रखरखाव के लिए सवाल में आ सकता है।
3. एडाप्टर पैटर्न के अनुप्रयोग स्थितियाँ
एडाप्टर पैटर्न को आमतौर पर निम्नलिखित परिस्थितियों में उपयोग किया जाता है:
- जब किसी मौजूदा क्लास का उपयोग करने की आवश्यकता हो, लेकिन उसका इंटरफ़ेस आवश्यकताओं को पूरा नहीं करता हो।
- जब किसी पुन:उपयोगी क्लास का निर्माण आवश्यक हो जो असंगत इंटरफ़ेस के साथ काम कर सकती है।
- जब किसी क्लास के बीच बहुत से अनुकूल इंटरफ़ेस में इंटरफ़ेस परिवर्तन करने की आवश्यकता हो।
4.1 UML क्लास आरेख
4.2 कार्रवाई कदम 1: एडाप्टर इंटरफ़ेस का डिज़ाइन करना
package main
type Target interface {
Request()
}
4.3 कार्रवाई कदम 2: एडाप्टर क्लास को कार्यान्वित करना
package main
type Adaptee struct {
}
func (a *Adaptee) SpecificRequest() {
// एडाप्टी क्लास की विशिष्ट कार्यक्षमता को कार्यान्वित करें
}
type Adapter struct {
adaptee *Adaptee
}
func NewAdapter() *Adapter {
return &Adapter{adaptee: &Adaptee{}}
}
func (a *Adapter) Request() {
a.adaptee.SpecificRequest()
}
4.4 कार्रवाई कदम 3: क्लाइंट कोड जो एडाप्टर पैटर्न का उपयोग करता है
package main
func main() {
adapter := NewAdapter()
adapter.Request()
}
5.1 एडाप्टर पैटर्न और ब्रिज पैटर्न के बीच अंतर और संबंध
एडाप्टर पैटर्न और ब्रिज पैटर्न दोनों अलग-अलग क्लासों के बीच इंटरफ़ेस मुद्दे का समाधान करने के लिए उपयोग किया जा सकता है, लेकिन उनका मुख्य अंतर यह है:
- एडाप्टर पैटर्न मुख्य रूप से दो पहले से मौजूदा इंटरफ़ेस के बीच संगतता परिवर्तन पर ध्यान केंत्रित है।
- ब्रिज पैटर्न मुख्य रूप से अंस्तरण और कार्यान्विती के अलग होने पर ध्यान केंत्रित है, अंशविभाजन के माध्यम से इंटरफ़ेस और कार्यान्विती क्लास के बीच ब्रिज के माध्यम से कपलिंग का प्राप्त करना।
5.2 सूक्ष्मसेवा शिल्प में एडाप्टर पैटर्न का अनुप्रयोग
एक सूक्ष्मसेवा शिल्प में, विभिन्न सूक्ष्मसेवाएं संचार के लिए विभिन्न इंटरफ़ेस का उपयोग कर सकती हैं। एडाप्टर पैटर्न हमें विभिन्न सेवाओं के बीच संगतता मुद्दों को हल करने में मदद कर सकता है, जिससे वे साथ मिलकर काम कर सकें।
5.3 स्वयंसंचालित और पृष्ठ-पृष्ठता से विभाजित विकास में एडाप्टर पैटर्न का अनुप्रयोग
स्वयंसंचालित और पृष्ठ-पृष्ठता से विभाजित विकास में, पहले वाला आमतौर पर पीछे से डेटा प्राप्त करने की आवश्यकता होती है, लेकिन पीछे के द्वारा प्रकट किए गए इंटरफ़ेस आमतौर पर पहले वाले की आवश्यकताओं को पूरा नहीं करते हैं। एडाप्टर पैटर्न हमें पीछे के इंटरफ़ेस को पहले वाले द्वारा अपेक्षित इंटरफ़ेस में अनुकूलित करने में मदद कर सकता है, जिससे प्रवाहमुक्त सहयोग प्राप्त हो सके।