2296
GB
What is the 'open-closed principle' (OCP) and what design mechanism commonly implements it?
IN
'खुला-बंद सिद्धांत' (ओसीपी) क्या है और कौन सा डिज़ाइन तंत्र आमतौर पर इसे लागू करता है?
A
OCP states that software should be open to all developers for modification at any time
OCP का कहना है कि सॉफ़्टवेयर किसी भी समय संशोधन के लिए सभी डेवलपर्स के लिए खुला होना चाहिए
B
OCP (Bertrand Meyer/Martin): software entities should be open for extension but closed for modification — commonly implemented through abstract base classes/interfaces where new behaviours are added by creating new implementing classes rather than modifying existing ones
ओसीपी (बर्ट्रेंड मेयर/मार्टिन): सॉफ्टवेयर इकाइयां विस्तार के लिए खुली होनी चाहिए लेकिन संशोधन के लिए बंद होनी चाहिए - आमतौर पर अमूर्त आधार वर्गों/इंटरफ़ेस के माध्यम से कार्यान्वित की जाती हैं जहां मौजूदा को संशोधित करने के बजाय नए कार्यान्वयन वर्ग बनाकर नए व्यवहार जोड़े जाते हैं
C
OCP prohibits the use of inheritance and requires composition-only design
OCP इनहेरिटेंस के उपयोग पर प्रतिबंध लगाता है और केवल-रचना डिज़ाइन की आवश्यकता होती है
D
OCP requires that once a class is deployed to production, no changes are ever permitted
OCP के लिए आवश्यक है कि एक बार एक वर्ग को उत्पादन में तैनात करने के बाद, किसी भी बदलाव की अनुमति नहीं दी जाए
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English)
Classic OCP violation: adding a new payment type requires modifying the PaymentProcessor class (adding an if-else branch). OCP solution: PaymentProcessor depends on a PaymentMethod interface; adding PayPal means creating a PayPalPaymentMethod class without touching PaymentProcessor. Strategy and Template Method patterns are canonical OCP implementations — new strategies extend the design without modifying the stable core.
व्याख्या (हिन्दी)
क्लासिक ओसीपी उल्लंघन: एक नया भुगतान प्रकार जोड़ने के लिए पेमेंटप्रोसेसर वर्ग को संशोधित करने की आवश्यकता होती है (अगर-और शाखा जोड़ना)। ओसीपी समाधान: पेमेंटप्रोसेसर पेमेंटमेथड इंटरफ़ेस पर निर्भर करता है; PayPal जोड़ने का अर्थ है PaymentProcessor को छुए बिना PayPalPaymentMethod क्लास बनाना। रणनीति और टेम्पलेट विधि पैटर्न विहित ओसीपी कार्यान्वयन हैं - नई रणनीतियाँ स्थिर कोर को संशोधित किए बिना डिजाइन का विस्तार करती हैं।