द्रव इंटरफ़ेस (धाराप्रवाह इंटरफ़ेस) - एक बहुत ही युवा तकनीक, यहां तक कि एक डिज़ाइन पैटर्न, जिसने लोकप्रियता हासिल की है और व्यापक रूप से जावा, सी #, पीएचपी एनकोडर के बीच उपयोग किया जाता है।
"अच्छे कोड" के अधिकांश तरीकों में कोड के पाठ (झूलने वाली रेखाएं, रिक्त स्थान, इंडेंट आदि) का निर्वहन होता है और यह बहुत अच्छा होता है, लेकिन कभी-कभी यह नरक में बदल जाता है। कोड के माध्यम से टहलना, विधि कॉल श्रृंखला को याद रखना, लंबी विधि और पठनीयता के बीच शाश्वत दुविधा, आदि।
लेकिन एक समाधान है - एक
द्रव इंटरफ़ेस! अब डेल्फी पर!
तो एक तरल पदार्थ इंटरफ़ेस क्या है?
संक्षेप में, यह एकल ऑब्जेक्ट के कई तरीके के कॉल का एक सरलीकरण है, तरीकों की एक श्रृंखला का उपयोग करता है जो उस वस्तु को लौटाता है जो इसे (अर्थात, स्वयं) कहते हैं। यह जटिल लगता है, लेकिन यह बहुत आसान और सरल लगता है:
CreateFluentBinaryWriter(Stream) .WriteString('active') .WriteByte(130);
कार्यान्वयन
इंटरफ़ेस प्राथमिक दिखता है - इस तरह:
IFluentBinaryWriter = interface function WriteByte(Value: Byte): IFluentBinaryWriter; function WriteString(Value: string): IFluentBinaryWriter; end;
इंटरफ़ेस को लागू करने वाले वर्ग को बनाने के लिए सहायक फ़ंक्शन बहुत सरल दिखता है - इस तरह:
function CreateFluentBinaryWriter(AStream: TStream): IFluentBinaryWriter; begin Result := TFluentBinaryWriter.Create(AStream); end;
इसके अलावा, द्रव इंटरफ़ेस के सभी कार्यों को उस फ़ंक्शन का एक उदाहरण लौटाया जाना चाहिए जिसे इस फ़ंक्शन कहा जाता है।उदाहरण के लिए, WriteString फ़ंक्शन एक स्ट्रिंग को एक स्ट्रीम (TBytesStream) में लिखता है, और उस फ़ंक्शन को वर्ग का एक उदाहरण देता है जिसे यह फ़ंक्शन कहा जाता है
function TFluentBinaryWriter.WriteString(Value: string): IFluentBinaryWriter; begin fBinaryWriter.Write(Value);
वह सब है! वास्तव में, यह समाप्त हो सकता है, लेकिन एक बहुत ही दिलचस्प कार्यान्वयन है!
विकल्प दो - अधिक जटिल
CreateFluentStringWriter(Stream) [' '] [''] ['!'];
यहां हम थोड़ी चाल के लिए जाते हैं। अट्रिब्यूट संपत्ति की घोषणा करें
property Attrib[Value: string]: IFluentStringWriter read AddString; default;
और AddString फ़ंक्शन में, हम स्ट्रीम के लिए अनुरोधित स्ट्रिंग लिखते हैं और इस फ़ंक्शन को परिणाम के रूप में उस वर्ग का उदाहरण लौटाते हैं
function TFluentValueWriter.AddString(Value: string): IFluentValueWriter; begin fBinaryWriter.Write(Value);
पुनश्च
एक द्रव इंटरफ़ेस का उपयोग करना बहुत व्यापक है, और अनाम प्रक्रियाओं के साथ मिलकर, आप बहुत कॉम्पैक्ट और स्व-दस्तावेजीकरण कोड प्राप्त कर सकते हैं!