2010-02-12 18 views
10

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

उत्तर

5

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

1

हाँ, क्योंकि एक फोन करने वाले हमेशा ऐसा कर सकते हैं:

BaseAbstractClass instance = new DerivedClass(); 
0

सार कक्षाएं एलएसपी के साथ बिल्कुल संघर्ष नहीं करती हैं। कई लोग सीधे एलएसपी की भावना का उल्लंघन करने के लिए ग्राहक कोड से "नया" उपयोग करने पर विचार करते हैं। यदि आप दोनों ऑब्जेक्ट को तत्काल और उपयोग करते हैं, तो आप उस कार्यान्वयन के लिए कड़े से बंधे हैं, और आप इसे "प्रतिस्थापित" नहीं कर सकते हैं।

किसी कारखाने के माध्यम से बनाई गई वस्तु या किसी तर्क के रूप में पारित होने पर निर्भरता इंजेक्शन के माध्यम से किसी प्रकार की भंडार द्वारा तैयार किए जाने पर विचार करें, जो कि विभिन्न परिस्थितियों में ठोस प्रकारों की आवश्यकता के बारे में निर्णय लेने पर केंद्रित हो सकता है।

0

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