हालांकि, जब तक आप भरोसा करते हैं कि लिस्कोव के प्रतिस्थापन सिद्धांत का पालन किया जाएगा, तब आप इसे ओवरराइड करने की अनुमति क्यों नहीं देंगे?
उदाहरण के लिए, क्योंकि मैं चाहता हूं कि एल्गोरिथ्म के कंकाल को ठीक किया जाए, और केवल विशिष्ट हिस्सों को उपवर्गों द्वारा परिभाषित (पुनः) होने दें। इसे व्यापक रूप से टेम्पलेट विधि पैटर्न (मेरे द्वारा नीचे जोर) के रूप में जाना जाता है :
टेम्पलेट विधि इस प्रकार कार्य शब्दार्थ की बड़ी तस्वीर का प्रबंधन करती है, और तरीकों के चयन और अनुक्रम के अधिक परिष्कृत कार्यान्वयन विवरण। यह बड़ी तस्वीर हाथ में काम के लिए अमूर्त और गैर-सार तरीकों को बुलाती है। गैर-अमूर्त तरीके पूरी तरह से टेम्पलेट विधि द्वारा नियंत्रित होते हैं लेकिन उप-विधियों में लागू किए गए अमूर्त तरीके, पैटर्न की अभिव्यंजक शक्ति और स्वतंत्रता की डिग्री प्रदान करते हैं। कुछ या सभी सार विधियों को एक उपवर्ग में विशेष किया जा सकता है, जिससे उपवर्ग के लेखक को बड़े शब्दार्थ को न्यूनतम संशोधनों के साथ विशेष व्यवहार प्रदान करने की अनुमति मिलती है। टेम्प्लेट विधि (जो गैर-सार है) इस पैटर्न में अपरिवर्तित बनी हुई है, यह सुनिश्चित करती है कि अधीनस्थ गैर-अमूर्त विधियों और अमूर्त विधियों को मूल रूप से अनुक्रम में कहा जाता है।
अपडेट करें
जिन परियोजनाओं पर मैं काम कर रहा हूँ, उनके कुछ ठोस उदाहरण:
- विभिन्न "स्क्रीन" के माध्यम से एक विरासत मेनफ्रेम प्रणाली के साथ संचार। प्रत्येक स्क्रीन में विशिष्ट डेटा बिट्स वाले फ़ील्ड का एक निश्चित नाम, स्थिति और लंबाई होती है। एक अनुरोध विशिष्ट डेटा के साथ कुछ क्षेत्रों को भरता है। एक प्रतिक्रिया एक या अधिक अन्य क्षेत्रों में डेटा लौटाती है। प्रत्येक लेनदेन एक ही मूल तर्क का अनुसरण करता है, लेकिन विवरण हर स्क्रीन पर भिन्न होते हैं। हमने स्क्रीन हैंडलिंग लॉजिक के निश्चित कंकाल को लागू करने के लिए कई अलग-अलग परियोजनाओं में टेम्प्लेट विधि का उपयोग किया, जबकि उप-वर्ग को स्क्रीन-विशिष्ट विवरणों को परिभाषित करने की अनुमति दी।
- एक्सेल फ़ाइलों से / के लिए DB तालिकाओं में कॉन्फ़िगरेशन डेटा का निर्यात / आयात करना। फिर से, एक्सेल फ़ाइल को संसाधित करने और डीबी रिकॉर्ड को अपडेट / अपडेट करने, या रिकॉर्ड को एक्सेल में डंप करने का मूल स्कीमा प्रत्येक तालिका के लिए समान है, लेकिन प्रत्येक तालिका का विवरण अलग है। इसलिए कोड डुप्लीकेशंस को खत्म करने और कोड को समझने और बनाए रखने में आसान बनाने के लिए टेम्पलेट मेथड एक बहुत ही स्पष्ट विकल्प है।
- पीडीएफ दस्तावेज़ बनाना। प्रत्येक दस्तावेज़ में एक ही संरचना होती है, लेकिन उनकी सामग्री हर बार अलग होती है, जो बहुत सारे कारकों पर निर्भर करती है। फिर से, टेम्प्लेट मेथड को पीढ़ी-दर-पीढ़ी के निर्धारित कंकाल को केस-विशिष्ट, परिवर्तनशील विवरण से अलग करना आसान बनाता है। असल में। यहां तक कि यह कई स्तरों पर भी लागू होता है, क्योंकि दस्तावेज़ में कई खंड होते हैं , जिनमें से प्रत्येक में शून्य या अधिक क्षेत्र होते हैं । टेम्प्लेट विधि यहां 3 अलग-अलग स्तरों पर लागू की जाती है।
पहले दो मामलों में, मूल विरासत कार्यान्वयन ने रणनीति का उपयोग किया था , जिसके परिणामस्वरूप बहुत सारे डुप्लिकेट कोड थे, जो निश्चित रूप से वर्षों में यहां सूक्ष्म अंतर बढ़े, इसमें बहुत सारे डुप्लिकेट या थोड़े अलग कीड़े शामिल थे, और बनाए रखना बहुत मुश्किल था। टेम्प्लेट विधि (और कुछ अन्य संवर्द्धन, जैसे जावा एनोटेशन का उपयोग करना) के बारे में विचार करने से कोड का आकार लगभग 40-70% कम हो जाता है।
ये केवल सबसे हालिया उदाहरण हैं जो मेरे दिमाग में आते हैं। मैं अब तक काम कर रही लगभग हर परियोजना से अधिक मामलों का हवाला दे सकता हूं।