मैंने गेटर्स और सेटर के उपयोग के संबंध में कुछ लेख/पोस्ट पढ़े हैं, और वे डोमेन मॉडल ऑब्जेक्ट्स में encapsulation के उद्देश्य को हराने में कैसे मदद करते हैं। मैं सेटर्स का उपयोग न करने के पीछे तर्क को समझता हूं - आप ऑब्जेक्ट बिजनेस नियमों और इनवेरिएंट के संदर्भ के बाहर उस ऑब्जेक्ट के गुणों में हेरफेर करने के लिए क्लाइंट कोड की अनुमति दे रहे हैं।डीडीडी और गेटर्स और सेटर्स का उपयोग
अब यह प्रिंसिपल अभी भी मुझे भ्रमित करता है। उदाहरण के लिए, यदि किसी ऑब्जेक्ट के सदस्य चर के मान को बदलने की आवश्यकता है तो क्या होगा? उदाहरण के लिए, यदि किसी व्यक्ति का नाम बदलता है तो मैं मॉडल में इसे कैसे प्रतिबिंबित कर सकता हूं? सबसे पहले मैंने सोचा, ठीक है क्यों 'चेंजनाम' नामक एक फ़ंक्शन नहीं है जो मुझे नए नाम में गुजरता है और बदले में आंतरिक 'नाम' चर बदल सकता है। खैर .... यह सिर्फ एक सेटटर नहीं है!
मुझे स्पष्टीकरण की आवश्यकता है - अगर मैं पूरी तरह से सेटर्स को खत्म करना चाहता था, तो उपरोक्त स्थितियों में, क्या मुझे पूरी तरह से कन्स्ट्रक्टर पैरामीटर पर भरोसा करना चाहिए? क्या मुझे एक कन्स्ट्रक्टर के माध्यम से पुरानी विशेषता मान के स्थान पर नया विशेषता मान पास करना चाहिए, जिसके बाद मैं ऑब्जेक्ट को मेरे पास जो भी स्थिरता बुनियादी ढांचे के पास पास करके परिवर्तनों को जारी रख सकता हूं?
इन दो लेख इस चर्चा में उपयोगी होते हैं: