जब कोई इस तरह कोड लिखते हैं, वह/वह एक बुनियादी OO डिजाइन सिद्धांत है जो कहते हैं पालन करने के लिए कोशिश कर रहा है -
कार्यक्रम एक इंटरफेस करने के लिए, एक ठोस कार्यान्वयन
मैं नहीं one of my blog posts में इस सिद्धांत को समझाया। Class Inheritance VS Interface Inheritance
अनुभाग में देखें।
पोस्ट को सारांशित करने के लिए, जब आप एक उप-प्रकार के उदाहरण को संदर्भित करने के लिए किसी मूल प्रकार के संदर्भ का उपयोग करते हैं, तो आपको बहुत लचीलापन मिलता है। उदाहरण के लिए, यदि आपको भविष्य में अपने उप-प्रकार के कार्यान्वयन को कभी भी बदलने की ज़रूरत है, तो आप अपने कोड को बदलने के बिना आसानी से ऐसा करने में सक्षम होंगे।
public void DoSomeStuff(Super s) {
s.someMethod();
}
और इस विधि के लिए एक कॉल - -
निम्न विधि पर विचार करें
DoSomeStuff(new Sub());
अब, अगर तुम कभी someMethod
अंदर तर्क बदलने की जरूरत है, तो आप इसे की घोषणा के द्वारा आसानी से कर सकते Super
का एक नया उप प्रकार, NewSubType
कहें, और उस कार्यान्वयन के अंदर तर्क बदलना। इस तरह, आपको उस विधि का उपयोग करने वाले अन्य मौजूदा कोड को कभी भी स्पर्श नहीं करना पड़ेगा।आप अभी भी निम्नलिखित तरीके से अपने DoSomeStuff
विधि का उपयोग करने में सक्षम हो जाएगा -
DoSomeStuff(new NewSubType());
था आप DoSomeStuff
के पैरामीटर घोषित Sub
की हो, तो आप तो इसके कार्यान्वयन भी परिवर्तन होगा -
DoSomeStuff(NewSubType s) {
s.someMethod();
}
और यह कई अन्य स्थानों पर चेन/बबल भी हो सकता है।
आपके संग्रह उदाहरण के संदर्भ में, यह आपको सूची कार्यान्वयन को बदलने देता है जो एक चर के बिना परेशानी के संकेत दे रहा है। ArrayList
के स्थान पर आप आसानी से LinkedList
का उपयोग कर सकते हैं।
यह "प्रदर्शन" पर निर्धारण के साथ क्या है से लिया? 90% समय, यह कोड लिखने के * कम से कम महत्वपूर्ण * पहलू के बारे में है! –
http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface – kiheru
आप इसे भी देख सकते हैं: http://stackoverflow.com/questions/ 1745 9 553/क्यों-कुछ-लोग-उपयोग-सूची-आधार-वर्ग-से-तत्काल-एक-नई-सरणीसूची – Marc