मेरे पास कुछ कोड हैं जहां एक अच्छा वंशानुक्रम मॉडल नीचे चला गया है और मैं यह समझने की कोशिश कर रहा हूं कि इसे क्यों और कैसे ठीक किया जाए। मूल रूप से, कल्पना कीजिए कि आपके पास एक चिड़ियाघर पदानुक्रम है:
class Animal
class Parrot : Animal
class Elephant : Animal
class Cow : Animal
आदि।
आपके पास आपके खाने (), रन (), आदि तरीके हैं और सब अच्छा है। फिर एक दिन कोई व्यक्ति साथ आता है और कहता है - हमारा कैजुबर्स्ट क्लास बढ़िया काम करता है और जानवर का इस्तेमाल करता है। वजन () और जानवर।हाइट (), नए अफ्रीकी बाइसन को छोड़कर जो बहुत मजबूत है और दीवार को चकनाचूर कर सकता है, इसलिए मैं इसे जोड़ रहा हूं। पशु वर्ग के लिए एक और गुण - isAfricanBizon () है और उस सामग्री का चयन करते समय उपयोग करें और केवल इसे अफ्रीकनइजन वर्ग के लिए ओवरराइड करें। अगला व्यक्ति आता है और कुछ इसी तरह का काम करता है और अगली बात आपको पता है कि आपके पास ये सभी गुण हैं, जो पदानुक्रम के कुछ सबसेट के लिए विशिष्ट है।
इस तरह के कोड को सुधारने / सुधारने का एक अच्छा तरीका क्या है? यहाँ एक विकल्प केवल प्रकारों की जांच के लिए डायनेमिक_कास्ट का उपयोग करना होगा, लेकिन यह कॉलगर्ल्स को बंद कर देता है और पूरे स्थान पर if-if का एक गुच्छा जोड़ता है। आपके पास यहां अधिक विशिष्ट इंटरफेस हो सकते हैं, लेकिन यदि आपके पास बेस क्लास संदर्भ है, तो इससे बहुत मदद नहीं मिलती है। कोई अन्य सुझाव? उदाहरण?
धन्यवाद!