आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

सेवा-उन्मुख वास्तुकला (SOA) के उदय के साथ, अधिक से अधिक संगठन अपने उद्यम प्रणालियों के लिए तृतीय-पक्ष सेवाओं का उपयोग कर रहे हैं। इन कंपनियों को तेजी से बदलते कारोबारी माहौल के साथ चलने की जरूरत है, जिसका मतलब एक सेवा प्रदाता की सेवाओं को दूसरे के लिए छोड़ना हो सकता है।

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

एडॉप्टर डिज़ाइन पैटर्न क्या है?

एडेप्टर पैटर्न उन वर्गों को अनुमति देता है जिनमें असंगत इंटरफेस एक साथ काम करते हैं। यह एक मौजूदा वर्ग (या सॉफ़्टवेयर) के इंटरफ़ेस को क्लाइंट (या सेवा) की अपेक्षा वाले इंटरफ़ेस में परिवर्तित करके करता है। एडेप्टर दो प्रकार के होते हैं: ऑब्जेक्ट एडेप्टर और क्लास एडेप्टर।

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

उपरोक्त वर्ग आरेख ऑब्जेक्ट एडेप्टर का प्रतिनिधित्व करता है। एडेप्टर वर्ग लागू करता है लक्ष्य इंटरफ़ेस, प्रभावी ढंग से इंटरफ़ेस के सभी तरीकों तक पहुंच प्राप्त कर रहा है। फिर यह एक को अनुकूलित करता है aptee और उसे लपेटता है aptee साथ लक्ष्य इंटरफ़ेस तरीके।

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

जावा में एडेप्टर डिज़ाइन पैटर्न को लागू करना

यह एप्लिकेशन ऑब्जेक्ट एडॉप्टर को लागू करेगा। यह नमूना आवेदन एक वित्तीय संगठन को चार्ज कार्ड के उपयोग और प्रसंस्करण से क्रेडिट कार्ड में परिवर्तित करने का अनुकरण करेगा। यह संगठन मूल रूप से निम्न चार्ज कार्ड इंटरफ़ेस का उपयोग करता था:

जनताइंटरफेसप्रभारी कार्ड{
जनताखालीपनमासिक शेष();
जनताखालीपनविलंब शुल्क();
जनताखालीपनवार्षिक शुल्क();
}

एक लोकप्रिय प्रकार का चार्ज कार्ड जिसे इस संगठन का सिस्टम प्रोसेस करता है, प्लम कार्ड है:

जनताकक्षाप्लमकार्डऔजारप्रभारी कार्ड{
निजीint यहाँ कार्ड नंबर;
निजी स्ट्रिंग ग्राहक का नाम;
निजीदोहरा संतुलन;

// प्राथमिक कंस्ट्रक्टर
जनताप्लमकार्ड(int यहाँ कार्ड संख्या, स्ट्रिंग ग्राहक नाम, दोहरा संतुलन){
यहकार्ड नं = कार्ड नं;
यहग्राहक नाम = ग्राहक नाम;
यहसंतुलन = संतुलन;
}

// गेटर्स और सेटर्स
जनताint यहाँgetCardNo(){
वापस करना कार्ड नंबर;
}

जनताखालीपनसेट कार्ड नं(int यहाँ कार्ड नंबर){
यहकार्ड नं = कार्ड नं;
}

जनता डोरी getCustomerName(){
वापस करना ग्राहक का नाम;
}

जनताखालीपनसेट ग्राहक नाम(स्ट्रिंग ग्राहक नाम){
यहग्राहक नाम = ग्राहक नाम;
}

जनतादोहराgetBalance(){
वापस करना संतुलन;
}

जनताखालीपनsetBalance(दोहरा संतुलन){
यहसंतुलन = संतुलन;
}

@Override
जनताखालीपनमासिक शेष(){
सिस्टम.आउट.प्रिंटल ("जनवरी में " + यह.ग्राहक नाम + " खर्च किया " + यह।संतुलन);
}

@Override
जनताखालीपनविलंब शुल्क(){
सिस्टम.आउट.प्रिंटल (यह.ग्राहक नाम + "मासिक विलंब शुल्क $80.00 है");
}

@Override
जनताखालीपनवार्षिक शुल्क(){
सिस्टम.आउट.प्रिंटल (यह.ग्राहक नाम + "वार्षिक शुल्क $200.00 है");
}
}

यह वित्तीय संस्थान क्रेडिट कार्ड में परिवर्तन कर रहा है और चार्ज कार्ड को समाप्त कर रहा है, इसलिए उनके कुछ ग्राहकों के पास अब क्रेडिट कार्ड हैं:

जनताइंटरफेसक्रेडिट कार्ड{
जनताखालीपनमासिक न्यूनतम भुगतान();
जनताखालीपनदिलचस्पी();
जनताखालीपनवार्षिक शुल्क();
}

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

जनताकक्षाचार्जकार्ड एडेप्टरऔजारक्रेडिट कार्ड{
चार्जकार्ड चार्जकार्ड;

जनताचार्जकार्ड एडेप्टर(चार्जकार्ड चार्जकार्ड){
यहचार्जकार्ड = चार्जकार्ड;
}

@Override
जनताखालीपनमासिक न्यूनतम भुगतान(){
यह.चार्जकार्ड.मासिक बैलेंस ();
}

@Override
जनताखालीपनदिलचस्पी(){
यह.chargeCard.lateFee ();
}

@Override
जनताखालीपनवार्षिक शुल्क(){
यह।प्रभारी कार्ड। वार्षिक शुल्क();
}
}

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

एडेप्टर पैटर्न का उपयोग करने के लाभ

एडेप्टर पैटर्न का उपयोग करने का प्रमुख लाभ यह है कि यह ग्राहकों को उनके कोड को बदले बिना नई सेवाओं, पुस्तकालयों और सुविधाओं का उपयोग करने की अनुमति देता है। यह एप्लिकेशन स्केलेबिलिटी को बढ़ावा देता है।

एक और फायदा यह है कि यह पैटर्न लचीला भी है। एडेप्टर पैटर्न दो कार्यान्वयन विधियाँ प्रदान करता है: ऑब्जेक्ट एडेप्टर और क्लास एडेप्टर।