मैं वर्चुअल कंस्ट्रक्टर के बारे में पढ़ता हूं, कुछ डिज़ाइन पैटर्न को लागू करने के लिए उपयोग किया जाता है, लेकिन वर्चुअल कंस्ट्रक्टर की किसी भी आवश्यकता को समझ में नहीं आया। तो आभासी रचनाकार क्या हैं और हमें वास्तव में उनकी आवश्यकता क्यों है?जहां आभासी रचनाकारों का उपयोग किया जाता है?
उत्तर
अधिकांश प्रोग्रामिंग भाषाओं में, afaik, आप वर्चुअल कन्स्ट्रक्टर नहीं ढूंढ सकते हैं। किसी वस्तु के निर्माण के बाद रनटाइम पर वर्चुअल सदस्यों का ओवरराइड मूल्यांकन किया जाता है, लेकिन अधिकांश भाषाओं में आपको उदाहरण बनाने के दौरान वास्तविक कक्षा को जानने की आवश्यकता होती है। इसलिए आभासी रचनाकार इन भाषाओं में कोई समझ नहीं लेते हैं।
नेट में, आप प्रतिबिंब के माध्यम से एक ऐसी ही समाधान प्राप्त कर सकते हैं, यानी आप प्रकार वर्ग है कि वस्तु आप का निर्माण करना चाहते हैं का प्रतिनिधित्व करता है का एक उदाहरण के माध्यम से एक वस्तु का निर्माण कर सकते हैं। और सामान्य समर्थन के साथ, आप कुछ समान प्राप्त कर सकते हैं, लेकिन यह वर्चुअल कन्स्ट्रक्टर नहीं है।
एकमात्र प्रोग्रामिंग भाषा जिसके साथ मैंने काम किया है, उसके पास वास्तविक वर्चुअल कन्स्ट्रक्टर डेल्फी है। डेल्फी में, एक विशिष्ट "मेटाक्लास प्रकार" होता है, यानी एक विशिष्ट प्रोग्रामिंग निर्माण जो मेटाक्लास का प्रतिनिधित्व करता है (जबकि .NET, मेटा क्लास, Type
कक्षा में, केवल सामान्य वर्ग का एक उदाहरण है)। तो अगर आप एक वर्ग TMyClass
कहा जाता है - Deplhi नामकरण रिवाजों का;)
TMyClass : Class ...
आप अब इस
TMyMetaClass : class of TMyClass
तरह metaclass घोषणा कर सकते हैं, आप एक चर TMyMetaClass
प्रकार की है कि घोषणा कर सकते हैं
MyMetaClassVariable : TMyMetaClass
...
// Assign the meta class to refer to our concrete class
MyMetaClassVariable := TMyClass;
और आप इस चर
के माध्यम से एक नया उदाहरण बना सकते हैंMyClassInstance := MyMetaClassVariable.Create();
अब, MyMetaClassVariable
किसी भी वर्ग को संदर्भित कर सकता है जो TMyClass
या इसके विशेषज्ञता है। यदि निर्माता को आभासी घोषित किया जाता है, तो चर का निर्माण उस विशिष्ट वर्ग के उदाहरण के साथ किया जाएगा।
उसी तरह, आप डेल्फी में आभासी स्थिर तरीकों ऐलान करते हैं और metaclass का एक उदाहरण के माध्यम से उन्हें फोन कर सकते हैं।
तो दूसरा प्रश्न? हमें आपकी प्रतिक्रिया का बेसब्री से इंतेज़ार हैं। खैर, डेल्फी में, वे .NET में Type
कक्षा जैसी कुछ समस्याओं को हल करते हैं, जिससे आप उन वस्तुओं को बनाने की अनुमति देते हैं जहां आप डिज़ाइन समय पर कक्षा का नाम नहीं जानते हैं। उदाहरण के लिए, जब आप एक फॉर्म डिज़ाइन करते हैं और आप नियंत्रणों का एक समूह डालते हैं, तो इस डेटा को डिजाइनर द्वारा क्रमबद्ध किया जाना चाहिए, और deserialized। जब फॉर्म deserialized है, तो यह वास्तव में metatypes पढ़ा जाता है, और सही उदाहरण (यह TextBox
, ComboBox
, आदि) मेटाटाइप पर आभासी कन्स्ट्रक्टर को कॉल करके बनाया गया है।
- 1. जहां जेडीबीसी रोसेट्स का उपयोग किया जाता है?
- 2. क्यों ओजीआई का उपयोग किया जाता है?
- 3. ImmutableObjectAttribute का उपयोग कैसे किया जाता है?
- 4. सुहोसिन का उपयोग क्यों किया जाता है?
- 5. लेआउट का उपयोग कैसे किया जाता है?
- 6. स्ट्रिंगियो का उपयोग कब किया जाता है?
- 7. @JsonProperty प्रॉपर्टी का उपयोग कब किया जाता है और इसके लिए क्या उपयोग किया जाता है?
- 8. स्थिर रचनाकारों का उपयोग क्या है?
- 9. शुद्ध आभासी विधि कहा जाता है
- 10. स्मृति में जहां शून्य प्रकारों को संग्रहीत किया जाता है?
- 11. मॉड्यूल विधि को ओवरराइड करें जहां से ... आयात का उपयोग किया जाता है
- 12. कुछ अच्छे उदाहरण क्या हैं जहां एसक्यूएल के बाहरी जॉइन का उपयोग किया जाता है?
- 13. रिवर्स इंजीनियरिंग कहां उपयोग किया जाता है?
- 14. कैसे ConcurrentDictionary का उपयोग किया जाता है और इसे क्रमबद्ध कैसे किया जाता है?
- 15. सी # अस्पष्टता त्रुटि जब गुणों का उपयोग किया जाता है
- 16. जब एसीएस का उपयोग नहीं किया जाता है?
- 17. आईएसओ में NSUserDefaults का उपयोग क्यों किया जाता है?
- 18. अमूर्त कक्षाओं में माध्यमिक रचनाकारों का उपयोग केस क्या है?
- 19. फ़ोनगैप कितना उपयोग किया जाता है
- 20. कौन सा चेकसम का उपयोग किया जाता है
- 21. WPF WinForms एप्लिकेशन के भीतर उपयोग किया जाता है, जहां एप्लिकेशन संसाधन कहां रखा जाए?
- 22. + = के लिए क्या उपयोग किया जाता है?
- 23. AssemblyInfo.cs के लिए उपयोग किया जाता है?
- 24. अभ्यास में क्विकॉर्ट का उपयोग क्यों किया जाता है?
- 25. एक्सकोड, देखें कि एक विधि का उपयोग किया जाता है
- 26. वास्तव में XQUERY का उपयोग कैसे किया जाता है?
- 27. प्रत्येक सॉर्टिंग एल्गोरिदम का उपयोग कब किया जाता है?
- 28. सिल्वरलाइट में App.xaml का उपयोग क्या किया जाता है?
- 29. क्यों रैंड में 1103515245 का उपयोग किया जाता है?
- 30. Google Analytics '__utm.gif का उपयोग किस लिए किया जाता है?
डेल्फी वाक्यविन्यास सही है। –
@Gamecat - धन्यवाद, मैंने अपना "अस्वीकरण" हटा दिया;) इसके लिए शोर के रूप में कोई आवश्यकता नहीं है। – Pete
दरअसल, यह 'TMyClass = class' है, यानी' = 'और' '' 'नहीं। –