पहले ही पढ़ कैसे निम्न चरणों केअपरिवर्तनीय वर्ग/वस्तु, निजी निर्माता, कारखाने विधि
द्वारा एक वर्ग अपरिवर्तनीय बनाने के लिए होने- "सेटर" तरीकों प्रदान न करें - तरीकों कि खेतों या वस्तुओं क्षेत्रों से जाना जाता संशोधित ।
- सभी फ़ील्ड को अंतिम और निजी बनाएं।
- उपclasses विधियों को ओवरराइड करने की अनुमति न दें। ऐसा करने का सबसे आसान तरीका कक्षा को अंतिम घोषित करना है। एक और परिष्कृत दृष्टिकोण रचनाकार निजी बनाने और कारखाने के तरीकों में उदाहरण बनाने के लिए है।
- यदि उदाहरण फ़ील्ड में म्यूटेबल ऑब्जेक्ट्स के संदर्भ शामिल हैं, तो उन ऑब्जेक्ट्स को बदलने की अनुमति न दें:
ए। म्यूटेबल ऑब्जेक्ट्स को संशोधित करने वाली विधियां प्रदान न करें।
बी। म्यूटेबल ऑब्जेक्ट्स के संदर्भ साझा न करें। कभी भी कन्स्ट्रक्टर को पारित बाहरी, परिवर्तनीय वस्तुओं के संदर्भों को संग्रहीत न करें; यदि आवश्यक हो, प्रतियां बनाएं, और प्रतियों को स्टोर संदर्भ दें। इसी तरह, अपनी विधियों में मूल लौटने से बचने के लिए आवश्यक होने पर अपनी आंतरिक परिवर्तनीय वस्तुओं की प्रतियां बनाएं।
AM मुझे यकीन नहीं है कि मैं अपरिवर्तनीयता के संदर्भ में निजी कन्स्ट्रक्टर और फैक्ट्री विधि की उपयोगिता को स्पष्ट रूप से समझता हूं। यदि मैं कक्षा फाइनल बनाता हूं, मूल रूप से इसे विस्तारित किसी भी अन्य वर्ग के सभी पथ बंद कर रहा हूं। कैसे एक और अधिक परिष्कृत दृष्टिकोण
मैं निजी निर्माता, सिंगलटन पैटर्न जो समझ में आता है में कारखाने विधि देखा है कहा गया है। लेकिन जब हम ऑब्जेक्ट अपरिवर्तनीयता की बात करते हैं, तो क्या हम निजी निर्माणकर्ता और स्थैतिक फैक्ट्री विधियों का जिक्र करते समय ऑब्जेक्ट निर्माण/तत्कालता को भी सीमित कर रहे हैं ??
हां। उदाहरण (2) और (4) उदाहरण अपरिवर्तनीय बनाने के लिए पर्याप्त होना चाहिए। करना (3) कक्षा को विस्तार करना असंभव बनाता है (या कम से कम, कोई उप-वर्ग तत्काल नहीं होगा), जो पूरी तरह से अलग है। –