मुझे यकीन नहीं है कि इससे पहले एक समान प्रश्न पूछा गया है, इसकी खोज की गई है, लेकिन कोई उपयोगी उत्तर नहीं मिला।जावा में सेटर्स बनाम ओवरलोडेड कन्स्ट्रक्टर
जैसा कि सवाल बताता है, बेहतर क्या है, अधिभारित कन्स्ट्रक्टर होने या एकाधिक सेटर फ़ंक्शन होने के कारण क्या बेहतर है?
परिदृश्य:
public class Something {
private int a;
private int b;
public Something(int a, int b) {
this.a = a;
this.b = b;
}
... // Do Something
}
अब, मेरी बुनियादी आवश्यकता थी दो पैरामीटर केवल के लिए के लिए। अब कल, आवश्यकता बदल दी गई है और मुझे एक नया पैरामीटर, सी और फिर अगले दिन डी जोड़ने के लिए कहा गया है, और एक बयान दिया गया है जिसमें कहा गया है कि हमारे पास और फ़ील्ड हो सकते हैं।
मेरे पास पहले से ही कई प्रोजेक्टर में इस कन्स्ट्रक्टर के लिए निर्भरता है। अब, मेरे प्रश्न पर वापस
- क्या यह पहले से अधिभारित कन्स्ट्रक्टर में नए फ़ील्ड जोड़ने के लिए सलाह दी जाती है?
- हर बार एक नया अधिभार कन्स्ट्रक्टर बनाएं जब भी मुझे एक नया फ़ील्ड जोड़ने की आवश्यकता हो ताकि मैं आश्रित कोड तोड़ूं?
- या बस डिफ़ॉल्ट खाली डिफ़ॉल्ट निर्माता का उपयोग करें और केवल setters का उपयोग
सलाह है कि आप मुझे दे सकते हैं क्या है (मेरे अचल स्थिति है, जो उच्च चिंता का नहीं है अप खिलवाड़)?
"मेरी अपरिवर्तनीयता को गड़बड़ाना, जो उच्च चिंता का नहीं है" यदि आप कुछ वर्ग अपरिवर्तनीय (और इस प्रकार के बारे में तर्क करना आसान) बनाने के प्रयास में गए हैं, तो उस काम को हल्के ढंग से फेंक न दें। –
'... बेहतर क्या है, एक अधिभारित कन्स्ट्रक्टर होने या एकाधिक सेटर फ़ंक्शंस होने के साथ?" "हां"। लेकिन गंभीरता से, यह सब संदर्भ पर निर्भर करता है। कभी-कभी आपको दोनों की आवश्यकता होती है, कभी-कभी आपको जावाबीन प्रतिबंधों के भीतर काम करने की आवश्यकता होती है, ... –