मैं जावा डिज़ाइन पैटर्न के माध्यम से जा रहा था और कुछ संदेह/प्रश्न प्रोटोटाइप डिज़ाइन पैटर्न प्राप्त कर रहा था। सबसे पहले मुझे बताएं कि मैंने क्या समझा है। प्रोटोटाइप डिज़ाइन पैटर्न का उपयोग वस्तुओं के निर्माण के लिए मेमोरी या संसाधनों के मामले में महंगा है। तो उस मामले में हम उस वस्तु के क्लोन का उपयोग करते हैं जो पहले से ही उपलब्ध है। तो नई वस्तु और क्लोन() बनाने के बीच क्या अंतर है? वस्तु स्मृति में कहां स्टोर करता है?जावा प्रोटोटाइप डिज़ाइन पैटर्न ऑब्जेक्ट सृजन
उत्तर
प्रोटोटाइप डिज़ाइन पैटर्न दो प्रकार की बचत बचत और स्थान बचत की लागत प्रदान करता है।
किसी ऑब्जेक्ट को बनाते समय समय बचत परिस्थितियों में आती है सहायक जानकारी के लिए महंगी पहुंच की आवश्यकता होती है - कहें, फ़ाइल, डेटाबेस या नेटवर्क से कॉन्फ़िगरेशन डेटा का अनुरोध करना। उदाहरण के लिए, यदि आप वेब सर्वर पर संग्रहीत टेम्पलेट से बहुत सारे पेज बना रहे हैं, तो एक बार टेम्पलेट को पढ़ने के लिए सस्ता है और वेब सर्वर को अलग से पूछने के बजाय प्रत्येक नए पेज के लिए शुरुआती बिंदु प्राप्त करने के लिए इसे क्लोन करना सस्ता है प्रत्येक पृष्ठ।
मेमोरी बचत अपरिवर्तनीय वस्तुओं का पुन: उपयोग करने से आती है: यदि आपके मूल में बहुत सारे तार होते हैं, तो एक नया उदाहरण बनाने के लिए या तो पूरी तरह से नए अपरिवर्तनीय तार बनाना होगा, या स्ट्रिंग इंटर्निंग मैन्युअल रूप से सौदा करना होगा। प्रोटोटाइप पैटर्न का उपयोग क्लोन को टेम्पलेट के अपरिवर्तनीय हिस्सों को साझा करके इस समस्या से सावधानी से बचाता है।
जावा clone()
विधि बस एक नई वस्तु बनाता है और इसमें सदस्य चर वैल्यू प्रतिलिपि बनाता है। आम तौर पर, यह एक नई वस्तु बनाने से न तो अधिक और न ही कम महंगा है। clone()
new
के साथ ऑब्जेक्ट बनाने से सस्ता हो सकता है जब किसी ऑब्जेक्ट के लिए कन्स्ट्रक्टर कुछ महंगा होता है: उदाहरण के लिए, अगर कन्स्ट्रक्टर ने तर्क लिया और डेटाबेस क्वेरी के हिस्से के रूप में उनका उपयोग किया तो क्या होगा? उस स्थिति में, clone()
का उपयोग सस्ता होगा, क्योंकि महंगा क्वेरी ऑपरेशन नहीं होगा।
हालांकि इस डिजाइन पैटर्न का उपयोग करने के अन्य कारण हैं: ज्यादातर, जब वस्तुओं को उपयोग से पहले जटिल सेटअप की आवश्यकता होती है जिसे आसानी से कन्स्ट्रक्टर में नहीं किया जा सकता है। कल्पना कीजिए कि किसी ऑब्जेक्ट में 20 गुण थे जिन्हें सेट करने की आवश्यकता थी। यदि आप उन्हें कन्स्ट्रक्टर पैरामीटर के साथ सेट करते हैं, तो कन्स्ट्रक्टर बहुत बदसूरत होगा - 20 पैरामीटर के साथ एक कन्स्ट्रक्टर की कल्पना करें! इसके बजाए, आप किसी ऑब्जेक्ट को शायद कोई पैरामीटर नहीं बना सकते हैं, म्यूटेटर विधियों का उपयोग करके 20 मान सेट करें, फिर clone()
ऑब्जेक्ट की आवश्यकता होने पर तैयार प्रतिलिपि बनाने के लिए ऑब्जेक्ट करें। clone()
को कोई पैरामीटर बिल्कुल नहीं चाहिए, इसलिए यह स्पष्ट रूप से कम बदसूरत है। यदि आपको इस ऑब्जेक्ट के कई अलग-अलग संस्करणों की कई प्रतियों की आवश्यकता है, तो प्रोटोटाइप पैटर्न आकर्षक हो जाता है।
- 1. पायथन ऑब्जेक्ट सृजन
- 2. जावा ईई डीएओ/डीटीओ (डेटा ट्रांसफर ऑब्जेक्ट) डिज़ाइन पैटर्न
- 3. डिज़ाइन पैटर्न पैटर्न?
- 4. निर्भरता उलटा। ऑब्जेक्ट सृजन
- 5. पहले डिज़ाइन या प्रोटोटाइप?
- 6. संदर्भ ऑब्जेक्ट डिज़ाइन पैटर्न क्या है?
- 7. पोस्ट-प्रारंभिक ऑब्जेक्ट सृजन ninject
- 8. प्रोटोटाइप पैटर्न को कैसे कार्यान्वित करें?
- 9. प्रोटोटाइप डिजाइन पैटर्न बनाम आईसीएलनेबल
- 10. जावा सिस्टम में कॉन्फ़िगरेशन डिज़ाइन पैटर्न
- 11. सी ++ ऑब्जेक्ट सृजन और कन्स्ट्रक्टर
- 12. प्रोजेक्ट यूलर डिज़ाइन पैटर्न
- 13. जावास्क्रिप्ट प्रोटोटाइप ऑब्जेक्ट
- 14. सेलेनियम पेजऑब्जेक्ट डिज़ाइन पैटर्न
- 15. रिपोजिटरी डिज़ाइन पैटर्न
- 16. डिज़ाइन पैटर्न: अधिसूचना प्रणाली
- 17. एमवीसी डिज़ाइन पैटर्न
- 18. सिंटेक्स हाइलाइट डिज़ाइन पैटर्न
- 19. सृजन
- 20. सृजन
- 21. Django ऑब्जेक्ट सृजन और पोस्टग्रेस अनुक्रम
- 22. प्रोटोटाइप डिजाइन पैटर्न वास्तव में बस क्लोन है?
- 23. "डिस्पैचर" डिज़ाइन पैटर्न क्या है?
- 24. डेटा एक्सेस लेयर डिज़ाइन पैटर्न
- 25. डोमेन-संचालित डिज़ाइन पैटर्न - डोमेन
- 26. क्या हमारे पास जावा में सी ++ में डिज़ाइन पैटर्न हैं?
- 27. जावा, डिज़ाइन पैटर्न: एकाधिक ईवेंट स्रोत और एक ईवेंट हैंडलर
- 28. जावा: पेज किए गए परिणामों के लिए डिज़ाइन पैटर्न
- 29. जावास्क्रिप्ट ऑब्जेक्ट पर प्रोटोटाइप जोड़ना
- 30. बिजनेस ऑब्जेक्ट डीएएल डिज़ाइन
यह आपके लिए उपयोगी हो सकता है http://stackoverflow.com/questions/663079/does-cloning-provide-a-performance-improvement-over-constructors-factory-methods –