संदर्भ प्रकारों के रूप में इंटरफेस के लिए प्राथमिकता:
यदि कोई उपयुक्त इंटरफ़ेस मौजूद है, तो आपको ठोस वर्ग के बजाय वस्तुओं को इसके माध्यम से संदर्भित करना चाहिए।
यह पैरामीटर, रिटर्न मान, वेरिएबल और फ़ील्ड पर लागू होता है।
इंटरफ़ेस का उपयोग करते समय लचीलापन:
इंटरफ़ेस का उपयोग करने से आप कोड को प्रभावित किए बिना कार्यान्वयन को बदल सकते हैं।
उदाहरण: LinkedHashSet से HashSet या TreeSet में बदलना, बस कंस्ट्रक्टर बदलें।
इंटरफ़ेस का उपयोग कब नहीं करना चाहिए:
कार्यान्वयन-विशिष्ट कार्यक्षमता:
यदि कोई कार्यान्वयन इंटरफ़ेस के लिए आवश्यक नहीं है (उदाहरण के लिए LinkedHashSet पुनरावृत्ति क्रम की गारंटी देता है, लेकिन HashSet नहीं करता है)।
उचित इंटरफ़ेस के बिना:
स्ट्रिंग या बिगइंटेगर जैसी कुछ कक्षाओं में समकक्ष इंटरफ़ेस नहीं होते हैं और इन्हें सीधे उपयोग किया जाना चाहिए।
वर्ग-आधारित रूपरेखा:
उदाहरण: java.io पैकेज में आउटपुटस्ट्रीम को एक अमूर्त वर्ग के माध्यम से संदर्भित किया जाता है, इंटरफ़ेस के माध्यम से नहीं।
कार्यान्वयन-विशिष्ट तरीके:
उदाहरण: प्रायोरिटीक्यू क्यू को लागू करता है, लेकिन क्यू में एक तुलनित्र() विधि मौजूद नहीं है। यदि आपको इस अतिरिक्त विधि की आवश्यकता है तो केवल कक्षा का उपयोग करें।
फ़ायदा:
इंटरफ़ेस का उपयोग प्रोग्राम को अधिक लचीला और मॉड्यूलर बनाता है, जिससे आप मौजूदा कोड को तोड़े बिना कार्यान्वयन को आसानी से बदल सकते हैं।
कोड उदाहरण
अच्छा उदाहरण: इंटरफ़ेस को प्रकार के रूप में उपयोग करें
Sets = new LinkedHashSet();
खराब उदाहरण: कंक्रीट वर्ग को प्रकार के रूप में उपयोग करना
LinkedHashSets = new LinkedHashSet();
लचीलापन: कोड को प्रभावित किए बिना कार्यान्वयन को बदलना
Sets = new TreeSet();
स्ट्रिंग जैसी अंतिम कक्षा का उपयोग करने का उदाहरण
String str = "Hello";
फ्रेमवर्क बेस क्लास का उपयोग करने का उदाहरण
OutputStream output = new FileOutputStream("file.txt");
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3