क्या किसी एकल कार्य का पुन: उपयोग करने के लिए एक वर्ग का विस्तार करना एक उचित अभ्यास है?


10

मैं एक वर्डप्रेस साइट के लिए कई पोस्ट फिल्टर विकसित कर रहा हूं, और मैंने पहले 4 को एक एकल वर्ग के साथ बनाया है।

अंतिम दो अपनी कक्षाओं में केवल एक ही फ़ंक्शन (अंतिम लिंक के उत्पादन के लिए फ़ंक्शन) को साझा करने के लिए पर्याप्त रूप से भिन्न हैं।

क्या यह उचित है, या तो इस तरह की या इसी तरह की काल्पनिक उदाहरणों की संख्या में, मूल वर्ग का विस्तार करने के लिए उस कार्यक्षमता को बढ़ाने के लिए, या कोई बेहतर तरीका है?


मैं इस सवाल को नहीं समझता। कक्षा के साथ चीजों का निर्माण करने का क्या मतलब है? क्या ये वर्ग किसी चीज़ से विरासत में मिले हैं? क्या पदानुक्रम के शीर्ष पर वर्ग पहले से ही सामान्य कार्य नहीं करेगा?
डेविड थोरले

जवाबों:


19

नहीं, यदि दो वर्ग इतने भिन्न हैं कि वे केवल एक कार्य को साझा करते हैं, तो संभावना है कि वे विनिमेय नहीं हैं - और इसलिए वे लिस्कोव सबस्टेशन सिद्धांत को तोड़ देंगे ।

यदि ऐसा करना तर्कसंगत है तो केवल एक आधार वर्ग से प्राप्त करें। कोड का एक टुकड़ा साझा करना शायद ही कभी विरासत का औचित्य है :)

इस विशेष उदाहरण में ऐसा लगता है कि आप इसके बजाय रचना के माध्यम से उस फ़ंक्शन को फिर से उपयोग करना चाहते हैं ...


3
वंशानुक्रम पर रचना को प्राथमिकता दें! ज्यादातर मामलों में यह आपको लंबे समय में जीवन को सरल बना देगा।
ट्रैविस

रचना FTW!
back2dos

मेरे उत्तर पर ध्यान देने योग्य बात मूल रूप से @Sardathrion जैसी ही है, मैं सिर्फ
रीलेवेंट

7

यदि एक वर्ग विवरण में " और " शब्द है, तो इसे दो (या अधिक) कक्षाओं में तोड़ दिया जाना चाहिए। चीजों की नज़र से, आप उस फ़ंक्शन को किसी अन्य वर्ग का सदस्य बना सकते हैं जिसे आपके वर्तमान में संदर्भित किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.