मैं हाल ही में how to create a fluent DSL के बारे में एक वेबकास्ट देख रहा था और मुझे यह मानना है कि मैं इस तरह के दृष्टिकोण का उपयोग क्यों करूंगा (कम से कम दिए गए उदाहरण के लिए)।डीएसएल/धाराप्रवाह इंटरफेस का बिंदु क्या है
Sizer sizer = new Sizer();
sizer.FromImage(inputImage)
.ToLocation(outputImage)
.ReduceByPercent(50)
.OutputImageFormat(ImageFormat.Jpeg)
.Save();
मैं डॉन:
वेबकास्ट है कि आप, एक इनपुट छवि उल्लेख करें कि यह आकार बदलने और निम्न सिंटैक्स का उपयोग कर एक निर्गम-फ़ाइल में सहेजें (सी # का उपयोग करके) के लिए अनुमति देता एक छवि वर्ग का आकार बदलने, प्रस्तुत 'टी समझ कैसे यह है कि कुछ मानकों लेता है एक "पारंपरिक" विधि की तुलना में बेहतर है:,
sizer.ResizeImage(inputImage, outputImage, 0.5, ImageFormat.Jpeg);
देखने के एक प्रयोज्य दृष्टिकोण से, यह उपयोग करने के लिए बहुत आसान लगता है, के बाद से यह स्पष्ट रूप से बताता है कि विधि के रूप में की उम्मीद इनपुट।
sizer.ToLocation(outputImage).Save();
तो पर अपने सवालों के
: इसके विपरीत, धाराप्रवाह इंटरफेस के साथ, कुछ भी आप को छोड़ते हुए/एक पैरामीटर/विधि-कॉल भूल, उदाहरण के लिए करने से रोकता है
1 - वहाँ कुछ रास्ता है एक धाराप्रवाह इंटरफ़ेस की उपयोगिता में सुधार करने के लिए (यानी उपयोगकर्ता को बताएं कि उसे क्या करने की उम्मीद है)?
2 - क्या यह धाराप्रवाह इंटरफ़ेस दृष्टिकोण सी # में मौजूद मौजूदा नामित विधि पैरामीटर के लिए केवल एक प्रतिस्थापन है? नामित पैरामीटर अप्रचलित इंटरफेस अप्रचलित बना देंगे, उदा। कुछ इसी तरह उद्देश्य सी प्रदान करता है:
sizer.Resize(from:input, to:output, resizeBy:0.5, ..)
3 - रहे धाराप्रवाह इंटरफेस बस के ऊपर से इस्तेमाल किया क्योंकि वे वर्तमान में लोकप्रिय हैं?
4 - या यह वेबकास्ट के लिए चुना गया एक बुरा उदाहरण था? उस स्थिति में, मुझे बताएं कि इस तरह के दृष्टिकोण के फायदे क्या हैं, इसका उपयोग करने के लिए यह कहां समझ में आता है।
बीटीडब्ल्यू: मुझे jquery के बारे में पता है, और देखें कि यह चीजों को कितना आसान बनाता है, इसलिए मैं उस या अन्य मौजूदा उदाहरणों के बारे में टिप्पणियों की तलाश नहीं कर रहा हूं।
मैं कुछ (सामान्य) टिप्पणियों को समझने में मदद करता हूं (उदाहरण के लिए) एक धाराप्रवाह इंटरफ़ेस (क्लासिकल क्लास-लाइब्रेरी के बजाए) को लागू करने के लिए, और एक को कार्यान्वित करने के लिए क्या देखना है।
दिलचस्प प्रश्न –
+1 मुझे यह भी लगता है कि वे वर्तमान में अधिक उपयोग कर रहे हैं। –