8

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

और उस मामले के लिए टेम्पलेट विधि ऐसा लगता है कि यह केवल मूल ओओ विरासत है।

क्या मुझे उनके मतभेदों के लिए कुछ महत्वपूर्ण पहलू याद आ रही हैं? क्या मुझे टेम्पलेट विधि के बारे में कुछ याद आ रहा है जो इसे और अधिक बुनियादी विरासत बनाता है?

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

उत्तर

9

यह मूल रूप से सभी अर्थशास्त्र के लिए नीचे आता है। रणनीति पैटर्न आपको किसी विशेष ऑल्गोरिदम/प्रक्रिया (रणनीति) में किसी अन्य ऑब्जेक्ट में पास करने की अनुमति देता है और इसका उपयोग करेगा। टेम्पलेट विधि आपको एल्गोरिदम के विशेष पहलुओं को ओवरराइड करने की अनुमति देती है जबकि अभी भी इसके कुछ पहलुओं को एक ही रखते हैं (ऑर्डर को वही रखें, और ऐसी चीजें हैं जो हमेशा शुरूआत और अंत में होती हैं ... उदाहरण के लिए 'टेम्पलेट') जबकि विरासत डेटा मॉडल में 'आईएस-ए' संबंधों का मॉडल करने का एक तरीका है।

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

+0

+1 एक अच्छी संक्षेप में स्पष्टीकरण के लिए, और विरासत पर संरचना का उल्लेख करने के लिए –

0

Strategy डिज़ाइन पैटर्न
रन-टाइम
(वस्तु रचना के माध्यम से) गतिशील रूप से एक वस्तु के एल्गोरिथ्म का आदान-प्रदान करने के लिए एक तरीका प्रदान करता है।

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

Template Method डिज़ाइन पैटर्न
के लिए एक रास्ता संकलन समय
(उपवर्गीकरण के माध्यम से) स्थिर एक वर्ग के व्यवहार के कुछ हिस्सों को फिर से परिभाषित प्रदान करता है।

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