रूबी ऑन रेल्स पैटर्न - सज्जाकार बनाम प्रस्तुतकर्ता


112

सज्जाकार और प्रस्तुतकर्ता के बारे में रेल समुदाय पर रूबी में आजकल हर तरह की बात हो रही है ।

दोनों के बीच आवश्यक अंतर क्या है? अगर वहाँ है, तो मुझे बताने वाले कौन से सुराग हैं, जिनका उपयोग दूसरे को करना है? या शायद दोनों के संयोजन में उपयोग करने के लिए?

जवाबों:


102

एक डेकोरेटर "चलो इस इकाई में कुछ कार्यक्षमता जोड़ते हैं" से अधिक है। एक प्रस्तुतकर्ता "मॉडल / बैकएंड और दृश्य के बीच एक पुल का निर्माण करें" से अधिक है। प्रस्तुतकर्ता पैटर्न की कई व्याख्याएं हैं।

सज्जाकार सामान्य / सामान्य उद्देश्य हैं। प्रस्तुतकर्ताओं के पास जिम्मेदारियों / उपयोगों की एक संकीर्ण सीमा होती है। डेकोरेटर्स का उपयोग डोमेन में किया जाता है, प्रस्तुतकर्ता लगभग हमेशा व्यू-जैसी कार्यक्षमता से संबंधित होते हैं।


3
धन्यवाद। ऐसा लगता है कि ड्रेपर मणि प्रस्तुतकर्ता और डेकोरेटर का एक संकर है।
केरूलिन

17
@keruilin एक बात ध्यान रखें: सज्जाकार वास्तव में अन्य सज्जाकार (साथ ही घटक वस्तु को सजाने) को सजाने में सक्षम होना चाहिए, क्योंकि उनका एक उद्देश्य विरासत की सीमाओं के आसपास प्राप्त करना है। (ड्रेपर ऐसा नहीं करता है )। डेकोरेटर पैटर्न उस अर्थ में समग्र पैटर्न से बहुत मिलता-जुलता है, सिवाय अंदर-बाहर के बजाय बाहर से संभाला जाता है (यदि वह अर्थ है)।
धब्बा

7
मैं एक सज्जाकार को सामान्य उद्देश्य पैटर्न के रूप में देखता हूं, और प्रस्तुतकर्ता को दृश्य परत से संबंधित सज्जाकार के एक विशिष्ट अनुप्रयोग के रूप में देखता हूं।
क्रिश

2
@ स्मज, ड्रैपर डेकोरेटर अन्य सजावट को सजा सकते हैं, कम से कम जैसे कि अंतर्निहित मॉडल में एसटीआई संबंध होता है।
केरूइलिन

ऐसा लगता है कि अब ड्रेपर खुद को प्रेजेंटेशन लेयर रैपर के रूप में पहचानता है - इसलिए यह अब एक डेकोरेटर नहीं है, बल्कि वास्तव में एक प्रस्तोता है। उनके GH से: "ड्रेपर आपके रेल एप्लिकेशन में प्रस्तुति तर्क की एक वस्तु-उन्मुख परत जोड़ता है।"
जारेड

35

मैं आपको यह जांचने के लिए सुझाव देता हूं - प्रदर्शनी बनाम प्रस्तुतकर्ता

डेकोरेटर एक डिज़ाइन पैटर्न है जो किसी वस्तु के अन्य उदाहरणों को प्रभावित किए बिना, इसे लपेटकर किसी विशिष्ट वस्तु की कार्यक्षमता को बढ़ाने के लिए उपयोग किया जाता है। सामान्य तौर पर, डेकोरेटर पैटर्न खुले / करीब सिद्धांत का एक उदाहरण है (वर्ग संशोधनों के लिए बंद है, लेकिन एक्सटेंशन के लिए उपलब्ध है)।

प्रदर्शन और प्रस्तुतकर्ता पैटर्न दोनों एक प्रकार के डेकोरेटर पैटर्न हैं।


माइक पैक द्वारा उस ब्लॉग पोस्ट से लिंक करने के लिए +1। उत्कृष्ट पोस्ट जो पैटर्न के बीच अंतर की व्याख्या करता है।
ki4jnq

प्रदर्शनी पैटर्न का उल्लेख करने के लिए +1। मैंने अवधी ग्रिम की पुस्तक प्राप्त की, जो इसे समझाती है। हालाँकि, यह मेरी समस्या का सही समाधान नहीं था, यह अभी भी एक अद्भुत पैटर्न है। विचार के लिए उत्कृष्ट भोजन।
योंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.