2010-03-31 6 views
7

डेल्फी मेमोरी प्रबंधन के संबंध में, आपकी डिज़ाइन रणनीतियों क्या हैं?डेल्फी मेमोरी प्रबंधन डिजाइन रणनीतियों: ऑब्जेक्ट या इंटरफेस?

  • उपयोग के मामले क्या हैं जहां आप ऑब्जेक्ट मैन्युअल रूप से बनाना और रिलीज़ करना पसंद करते हैं?
  • इंटरफेस, इंटरफेस्ड ऑब्जेक्ट्स, और उनके संदर्भ गिनती तंत्र को किस मामले में प्राथमिकता दी जाती है?

क्या आपने संदर्भित वस्तुओं के साथ कुछ जाल या कठिनाइयों की पहचान की है?

यहां अपना अनुभव साझा करने के लिए धन्यवाद।

उत्तर

7

जब भी आप धागे के बीच वस्तुओं को साझा करते हैं तो इंटरफेस का उपयोग करना बेहतर होता है। एक साझा ऑब्जेक्ट में एक पहचान योग्य मालिक नहीं होना चाहिए, इसलिए थ्रेड को जो इंटरफ़ेस के अंतिम संदर्भ को मुक्त करता है, लागू करने वाला ऑब्जेक्ट एक प्राकृतिक फिट है। डिजाइन के लिए इंटरफेस का उपयोग करने और मल्टी-थ्रेडेड कोड में जटिल स्वामित्व के कुछ मुद्दों पर काबू पाने के लिए एक अच्छा उदाहरण के लिए OmniThreadLibrary देखें।

1

आपको हमेशा इंटरफेस पसंद करना चाहिए जब तक कि वीसीएल प्रतिबंधों के कारण यह संभव न हो। मुझे संदेह है कि, डेल्फी 1.0 में इंटरफेस उपलब्ध थे, वीसीएल बहुत अलग हो गया होगा।

संदर्भ चक्रों के लिए एक मामूली विचार देखना है। यदि ए में बी और बी के लिए एक इंटरफ़ेस है, तो ए को इंटरफेस है, तो वे दोनों हमेशा के लिए जीते रहेंगे।

+0

क्या आप उन वीसीएल प्रतिबंधों का विवरण दे सकते हैं? –

+3

बस वीसीएल कक्षाओं में से कई स्मृति प्रबंधन के लिए विभिन्न तंत्र का उपयोग करते हैं, और आप केवल बीच में एक इंटरफ़ेस नहीं फिसल सकते हैं। स्पष्ट मामला टीकंपोनेंट के बच्चे हैं, जो माता-पिता के स्वामित्व में हैं और इसे नष्ट होने पर नष्ट कर दिया जाता है। –

+2

वीसीएल घटकों में एक-दूसरे के संदर्भ सभी प्रकार के संदर्भ हो सकते हैं, घटक को कार्यान्वित करने के रूप में इंटरफेस एक गोलाकार संदर्भ दुःस्वप्न का कारण बनता है। –

संबंधित मुद्दे