मैं डीडीडी के बारे में सीख रहा हूं, और इस बयान में आया हूं कि "मूल्य-वस्तुएं" अपरिवर्तनीय होनी चाहिए। मैं समझता हूं कि इसका मतलब यह है कि वस्तुएं बनने के बाद वस्तुओं को बदलना नहीं चाहिए। यह मेरे लिए सोचने का एक नया तरीका है, लेकिन कई मामलों में यह समझ में आता है।जटिल प्रारंभिकरण के साथ एक अपरिवर्तनीय वस्तु को कैसे डिजाइन करें
ठीक है, इसलिए मैं अपरिवर्तनीय मूल्य-वस्तुएं बनाना शुरू कर देता हूं।
- मुझे यकीन है कि वे निर्माता के लिए पैरामीटर के रूप में पूरे राज्य ले कर,
- मैं संपत्ति setters नहीं जोड़ते हैं,
- और सुनिश्चित करें कि कोई विधि (सामग्री को संशोधित करने के लिए केवल नए उदाहरणों लौट अनुमति दी जाती है)।
लेकिन अब मैं इस मान वस्तु को बनाना चाहता हूं जिसमें 8 अलग-अलग संख्यात्मक मान होंगे। यदि मैं 8 संख्यात्मक पैरामीटर वाले कन्स्ट्रक्टर का निर्माण करता हूं तो मुझे लगता है कि इसका उपयोग करना बहुत आसान नहीं होगा, या इसके बजाय - संख्याओं में गुजरने में गलती करना आसान होगा। यह अच्छा डिजाइन नहीं हो सकता है।
तो प्रश्न यह है: क्या मेरे अपरिवर्तनीय वस्तु को बेहतर बनाने का कोई अन्य तरीका है .., किसी भी जादू को कन्स्ट्रक्टर में एक लंबी पैरामीटर सूची को पार करने के लिए सी # में किया जा सकता है? मैं बहुत अपने विचारों को सुनने में रुचि है ..
अद्यतन: इससे पहले कि किसी को भी यह उल्लेख है, एक विचार यहाँ पर चर्चा की गई है: Immutable object pattern in C# - what do you think?
अन्य सुझाव या टिप्पणियां सुनवाई हालांकि में रुचि रखते हैं।
आपको सभी फ़ील्ड केवल पढ़ने के लिए भी बनाना चाहिए। यह अपरिवर्तनीयता को अधिक घोषणात्मक बनाता है – JaredPar