मैं "एक कार्यान्वयन के बजाय एक अंतरफलक के लिए प्रोग्रामिंग" शब्द भर में आया हूं, और मुझे लगता है कि मैं इस तरह का मतलब समझता हूं। लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मुझे समझ में आ रहा है कि यह लाभ है और यह संभव कार्यान्वयन है।
"एक इंटरफ़ेस के लिए प्रोग्रामिंग" का अर्थ है, जब संभव हो, तो एक ठोस कार्यान्वयन को संदर्भित करने के बजाय, एक वर्ग के एक अधिक सार स्तर (एक इंटरफ़ेस, सार वर्ग, या कभी-कभी किसी प्रकार का एक सुपरक्लास) को संदर्भित करना चाहिए।
जावा में एक सामान्य उदाहरण, उपयोग करना है:
List myList = new ArrayList();
के बजाय ArrayList myList = new ArrayList();
।
इस बारे में मेरे दो सवाल हैं:
मैं यह सुनिश्चित करना चाहता हूं कि मैं इस दृष्टिकोण के मुख्य लाभों को समझता हूं। मुझे लगता है कि लाभ ज्यादातर लचीलेपन के हैं। एक ठोस कार्यान्वयन के बजाय एक वस्तु को अधिक उच्च-स्तरीय संदर्भ के रूप में घोषित करना, विकास चक्र के दौरान और पूरे कोड में अधिक लचीलेपन और बनाए रखने की अनुमति देता है। क्या ये सही है? क्या लचीलापन मुख्य लाभ है?
क्या 'प्रोग्रामिंग टू ए इंटरफ़ेस' के और भी तरीके हैं? या "एक ठोस कार्यान्वयन के बजाय एक इंटरफ़ेस के रूप में एक चर घोषित कर रहा है" इस अवधारणा का एकमात्र कार्यान्वयन है?
मैं जावा कंस्ट्रक्शन इंटरफेस के बारे में बात नहीं कर रहा हूं । मैं OO सिद्धांत "एक अंतरफलक के लिए प्रोग्रामिंग, एक कार्यान्वयन नहीं" के बारे में बात कर रहा हूं। इस सिद्धांत में, विश्व "इंटरफ़ेस" एक वर्ग के किसी भी "सुपरटेप" को संदर्भित करता है - एक इंटरफ़ेस, एक सार वर्ग, या एक साधारण सुपरक्लास जो अधिक ठोस उपवर्गों की तुलना में अधिक सार और कम ठोस है।