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

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

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

एक उपवर्ग एक सार पद्धति को लागू कर सकता है, लेकिन यह अंतिम विधि द्वारा कार्यान्वित एल्गोरिथ्म को फिर से परिभाषित नहीं कर सकता है।

टेम्प्लेट विधि कैसे काम करती है

एक विशिष्ट टेम्पलेट विधि पैटर्न में निम्नलिखित संरचना होगी:

अंतिमखालीपनटेम्पलेट विधि(){
सार ऑपरेशन 1 ();
सार ऑपरेशन 2 ();

कंक्रीटऑपरेशन 1 ();
कंक्रीटऑपरेशन 2 ();

अंकुश();
}

ध्यान देने वाली पहली महत्वपूर्ण बात यह है कि TemplateMethod() अंतिम है, इसलिए कोई उपवर्ग इस विधि को ओवरराइड नहीं कर सकता है। ध्यान देने वाली दूसरी महत्वपूर्ण बात यह है कि टेम्पलेट विधि पैटर्न द्वारा उपयोग की जाने वाली तीन प्रकार की विधियाँ हैं: ठोस, सार और हुक।

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

जावा में टेम्पलेट विधि पैटर्न लागू करना

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

उदाहरण के लिए, आप अपने एप्लिकेशन को कई डेटाबेस सिस्टमों में से एक से जोड़ सकते हैं। डेटाबेस से जुड़ने और उपयोग करने के चरण एक समान टेम्पलेट का पालन करते हैं:

जनताअमूर्तकक्षाडेटाबेस{
// टेम्पलेट विधि
अंतिमखालीपनडेटाबेस टेम्पलेट(){
// अमूर्त तरीके
सेटडीबीड्राइवर ();
सेट क्रेडेंशियल्स ();

// ठोस तरीका
जोड़ना();

// अमूर्त तरीके
क्रिएटडीबी ();
सेटडाटा ();
रीडडाटा ();

// हुक के तरीके
अगर (userWantsToUpdate ()) {
अद्यतन आकड़ें();
}

अगर (userWantsToDelete ()) {
डेटा हटाएं ();
}

// ठोस तरीका
निकट संबंध();
}

अमूर्तखालीपनsetDBdriver();
अमूर्तखालीपनसेट क्रेडेंशियल्स();
अमूर्तखालीपनcreateDB();
अमूर्तखालीपनसेटडाटा();
अमूर्तखालीपनreadData();
अमूर्तखालीपनअद्यतन आकड़ें();
अमूर्तखालीपनडेटा हटाएं();

खालीपनजोड़ना(){
सिस्टम.आउट.प्रिंटल ("डेटाबेस से कनेक्ट हो रहा है...");
}

खालीपननिकट संबंध(){
सिस्टम.आउट.प्रिंटल ("डेटाबेस कनेक्शन नष्ट किया जा रहा है...");
}

बूलियनuserWantsToUpdate(){
वापस करनाअसत्य;
}

बूलियनuserWantsToDelete(){
वापस करनाअसत्य;
}
}

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

टेम्प्लेट विधि में अन्य विधियाँ डेटाबेस के प्रकार के आधार पर भिन्न होंगी। उदाहरण के लिए, एक MySQL डेटाबेस डेटा को टेबल में स्टोर करता है, जबकि a MongoDB डेटाबेस संग्रह में डेटा संग्रहीत करता है. यदि आप ए का उपयोग करना चाहते हैं जावा में MySQL डेटाबेस, बस एक नया MySQL वर्ग बनाएँ जो डेटाबेस वर्ग का विस्तार करता है:

जनताकक्षामाई एसक्यूएलका विस्तारडेटाबेस{
@Override
खालीपनsetDBdriver(){
सिस्टम.आउट.प्रिंटल ("MySQL ड्राइवर का चयन किया जा रहा है...");
}

@Override
खालीपनसेट क्रेडेंशियल्स(){
सिस्टम.आउट.प्रिंटल ("MySQL डेटाबेस क्रेडेंशियल सेट कर रहा है...");
}

@Override
खालीपनcreateDB(){
सिस्टम.आउट.प्रिंटल ("नई टेबल बनाई जा रही है...");
}

@Override
खालीपनसेटडाटा(){
सिस्टम.आउट.प्रिंटल ("डेटाबेस में डेटा सम्मिलित करना...");
}

@Override
खालीपनreadData(){
सिस्टम.आउट.प्रिंटल ("डेटाबेस से डेटा पुनर्प्राप्त कर रहा है...");
}

@Override
खालीपनअद्यतन आकड़ें(){
सिस्टम.आउट.प्रिंटल ("डेटाबेस में डेटा अपडेट कर रहा है...");
}

@Override
खालीपनडेटा हटाएं(){
सिस्टम.आउट.प्रिंटल ("डेटाबेस से डेटा मिटाया जा रहा है...");
}
}

MySQL वर्ग डेटाबेस वर्ग के सभी अमूर्त तरीकों को लागू करता है। यह कुछ ठोस तरीकों को भी ओवरराइड कर सकता है। हालाँकि, यह स्पर्श नहीं कर सकता डेटाबेस टेम्पलेट () विधि, जो अंतिम कीवर्ड का उपयोग करती है।

जनताकक्षामुख्य{
जनतास्थिरखालीपनमुख्य(स्ट्रिंग [] तर्क){
डाटाबेस mySQLDB = नया माई एसक्यूएल();
mySQLDB.डेटाबेस टेम्पलेट();
}
}

यह मुख्य वर्ग एक नया MySQL डेटाबेस ऑब्जेक्ट बनाता है और यह अनुकरण करने के लिए टेम्पलेट विधि का उपयोग करता है कि कोई एप्लिकेशन डेटाबेस से कैसे कनेक्ट होगा। मुख्य विधि चलाने से निम्न आउटपुट कंसोल पर प्रिंट होता है:

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

@Override
बूलियनuserWantsToUpdate(){
वापस करनासत्य;
}

उपरोक्त कोड को केवल MySQL क्लास में जोड़कर, एप्लिकेशन अब डेटाबेस में डेटा अपडेट करता है। यदि आप मुख्य वर्ग को फिर से चलाते हैं तो यह निम्न अद्यतन आउटपुट प्रदर्शित करेगा:

जैसा कि आप देख सकते हैं, एप्लिकेशन अब डेटाबेस में डेटा को अपडेट कर रहा है।

टेम्प्लेट विधि डिज़ाइन पैटर्न का उपयोग करने के लाभ

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

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