के साथ एक इंटरफ़ेस के खिलाफ कोड मैंने Why You Should Be Using Interfaces पर ब्याज निक होजेस ब्लॉग के साथ पढ़ा है और चूंकि मैं पहले से ही अपने कोडिंग में उच्च स्तर पर इंटरफेस से प्यार करता हूं, मैंने यह देखने का फैसला किया कि मैं इसे कैसे बढ़ा सकता हूं निम्न स्तर और वीसीएल कक्षाओं में इसके लिए क्या समर्थन मौजूद है इसकी जांच करने के लिए।टीएसट्रिंग्स और टीस्ट्रिंगलिस्ट
var
MyList : TStrings;
sCommaText : string;
begin
MyList := TStringList.Create;
try
MyList.LoadFromFile('c:\temp\somefile.txt');
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
finally
MyList.Free;
end;
end;
एक अच्छा सरलीकरण यदि प्रतीत होता है:
एक आम निर्माण है कि मैं की जरूरत है, इस कोड को एक अल्पविराम पाठ स्ट्रिंग में एक छोटी सी पाठ फ़ाइल सूची लोड करने के लिए कुछ एक TStringList के साथ सरल करने के लिए उदाहरण के लिए है मैं एक अंतरफलक के रूप MyList उपयोग करने के साथ लिख सकता है - यह कोशिश अंत में और सुधार पठनीयता से छुटकारा पाने होगा:
var
MyList : IStrings;
//^^^^^^^
sCommaText : string;
begin
MyList := TStringList.Create;
MyList.LoadFromFile('c:\temp\somefile.txt');
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
end;
मैं एक IStrings हालांकि परिभाषित नहीं देख सकते हैं - Classes.pas में नहीं निश्चित रूप से है, हालांकि देखते हैं ओएलई प्रोग्रामिंग के संबंध में इसके संदर्भ ऑनलाइन। क्या यह अस्तित्व में है? क्या यह एक वैध सरलीकरण है? मैं डेल्फी एक्सई 2 का उपयोग कर रहा हूँ।
यदि आप मेरी राय चाहते हैं: ऐसा मत करो! जैसे इंटरफेस का उपयोग कभी नहीं करना कोई समाधान नहीं है, सब कुछ के लिए इंटरफेस का उपयोग करना एक भी नहीं है। यहां तक कि निक ने दावा किया है कि टीएसट्रिंग्स/टीस्ट्रिंगलिस्ट को अपने नवीनतम ब्लॉग पोस्ट में क्लास इंस्टेंस के रूप में पूरी तरह इस्तेमाल किया जा सकता है। –
टीएसट्रिंग्स 'लगभग' एक इंटरफेस है, यह एक अमूर्त वर्ग है जिसमें विभिन्न कार्यान्वयन हो सकते हैं। जब भी संभव हो, मैं केवल TStrings को TStringList के बजाय पैरामीटर के प्रकार के रूप में पास करता हूं। – mjn
मैं @UweRaabe से सहमत हूं। इंटरफेस शक्तिशाली हैं, और शक्तिशाली उपकरणों का अक्सर दुरुपयोग किया जाता है। किसी वस्तु संदर्भ के बजाय इंटरफ़ेस संदर्भ का उपयोग न करें क्योंकि यह संभव है। मैं इंटरफेस के मूल उद्देश्य का पालन करने की सलाह देता हूं - खुली एक्स्टेंसिबल डिज़ाइन। – kludg