के लिए बहुत सारे कन्स्ट्रक्टर Args तो मैंने निर्भरता इंजेक्शन के साथ फैक्टरी डिजाइन पैटर्न का उपयोग करने का निर्णय लिया।निर्भरता इंजेक्शन/विरासत डिजाइन पैटर्न
class ClassA
{
Object *a, *b, *c;
public:
ClassA(Object *a, Object *b, Object *c) :
a(a), b(b), c(c) {}
};
class ClassB : public ClassA
{
Object *d, *e, *f;
public:
ClassB(Object *a, Object *b, Object *c, Object *d, Object *e, Object *f) :
ClassA(a, b, c), d(d), e(e), f(f) {}
};
अब, समस्या यह है कि classB निर्माता के लिए भी कई तर्क है। यह एक एकल विरासत-परत उदाहरण है, लेकिन जब विरासत परतें गहरी हो रही हैं, और जब प्रत्येक लेयर-क्लास को और अधिक वस्तुओं की आवश्यकता होती है, तो शीर्ष परत में निर्माता को बनाने के लिए बहुत से तर्कों की आवश्यकता होती है!
मुझे पता है कि मैं निर्माता के बजाए सेटर्स का उपयोग कर सकता हूं, लेकिन क्या कोई और तरीका है?
मेरा सामान्य दृष्टिकोण जितना संभव हो सके विरासत से बचने के लिए है, और प्रत्येक वर्ग को एक जिम्मेदारी पर केंद्रित रखने की कोशिश करें। क्या आप 'क्लासए' को अलग से बना सकते हैं, और फिर उस संदर्भ के साथ 'क्लासबी' शुरू कर सकते हैं, बजाय उन्हें विरासत के माध्यम से कसकर जोड़ना? –
माइक सेमुर सही है। एक रिश्ते (विरासत) को अधिक कसकर युग्मित करने के लिए एक रिश्ता (रचना) पसंद करते हैं। शायद अगर आप समझाते हैं कि आप क्या करना चाहते हैं, तो हम आपको बता सकते हैं कि इसे पूरा करने के लिए कितना बेहतर है? – metal
मुझे विरासत के साथ कोई बड़ी समस्या नहीं दिख रही है। इसे हर जगह इस्तेमाल किया जाना चाहिए जहां इसकी आवश्यकता है। यह सब कुछ के रूप में दुरुपयोग नहीं किया जाना चाहिए। –