कुछ डिज़ाइन पैटर्न प्रमुख योगदान वाले मॉड्यूल में पाए जाते हैं?


10

इसके अलावा प्रस्तुति-अमूर्त नियंत्रण और अन्य पैटर्न है कि कर रहे हैं Drupal कोर में प्रयोग किया जाता है, वहाँ किसी भी अन्य डिजाइन पैटर्न प्रमुखता से अधिक में इस्तेमाल कर रहे हैं लोकप्रिय योगदान मॉड्यूल इस तरह के दृश्य, CCK, और विशेषताएं के रूप में?


2
जैसा कि faq में बताया गया है , "आपको केवल वास्तविक समस्याओं के आधार पर व्यावहारिक, उत्तर देने योग्य प्रश्न पूछना चाहिए, जो आपके सामने आने वाले हैं। चट्टी, खुले हुए प्रश्न हमारी साइट की उपयोगिता कम कर देते हैं और अन्य प्रश्नों को सामने वाले पृष्ठ से दूर कर देते हैं।"
kiamlaluno

1
यह एक अच्छा समुदाय विकी विषय हो सकता है
चुलकी

कम्युनिटी विकी का उपयोग उन सवालों के लिए नहीं किया जाता है जो स्वीकार्य नहीं हैं, या जो बॉर्डरलाइन हैं। सामुदायिक विकी का भविष्य देखें ।
kiamlaluno

2
दूसरी तरफ, मुझे लगता है कि यह एक दिलचस्प विषय है। बेहतर प्रश्न के लिए सुझाव: "क्या कोई डिज़ाइन पैटर्न है जो समस्या X को हल कर सकता है?"। क्योंकि जो डिज़ाइन पैटर्न हैं, किसी समस्या को हल करने के लिए, उनका उपयोग केवल इसलिए नहीं किया जाना चाहिए कि उनका उपयोग किया जाता है।
बेरदीर

1
@kiamlaluno, मैं तर्क दूंगा कि सवाल अचूक, बकवास या अव्यवहारिक नहीं है, हालांकि यह यकीनन खुला-समाप्त हो सकता है। प्रश्न पूछने में मेरा उद्देश्य बेहतर तरीके से यह जानना है कि डिज़ाइन पैटर्न का उपयोग कैसे किया जाता है, कोड में कि मैं कुछ परिचित हूं।
मैट वी।

जवाबों:


10

शुरू करने के लिए एक जगह कोर ही है और पैटर्न कंट्राब के संपर्क में है। - लैरी गारफील्ड (क्रेल) द्वारा एक महान लेखन ड्रुपल वॉचडॉग लेख में पाया जा सकता है ।

प्रेक्षकों, आगंतुकों, और झांकने वाले टोम्स

द्रुपाल वास्तव में ऑब्जर्वर और विज़िटर के जुड़वां पैटर्न पर बनाया गया है, हालांकि यह उन्हें नाम से नहीं बुलाता है। इसके बजाय, यह उन्हें हुक कहता है। hook_node_load(), hook_user_login()और इसके आगे, संक्षेप में, नोड्स और उपयोगकर्ताओं पर पर्यवेक्षक हैं। hook_form_alter(), hook_node_view()और इसके आगे, संक्षेप में, आगंतुक हैं। क्योंकि द्रुपाल दोनों के बीच अंतर नहीं करता है, कुछ हुक यकीनन दोनों पैटर्न माना जा सकता है लेकिन सिद्धांत समान है।

कारखानों और आदेशों

फ़ैक्टरी पैटर्न पर कई भिन्नताएं हैं, लेकिन वे सभी एक ही विचार के लिए उबलते हैं: एक वस्तु, एक ग्राहक, एक अन्य वस्तु, एक कारखाने, को तर्क के एक उचित कार्यान्वयन के लिए पूछता है, लेकिन इसकी परवाह नहीं करता है । फ़ैसला करना फ़ैसले पर निर्भर है। db_insert()फ़ंक्शन पर विचार करें , जिनमें से महत्वपूर्ण बिट्स नीचे दिखाए गए हैं:

   function db_insert($table, array $options = array()) {
       // ...
       return Database::getConnection($options['target'])->insert($table, $options);
     }

Database::getConnection()विधि एक कारखाने कि इस साइट के लिए एक कनेक्शन वस्तु उचित रिटर्न है।

डॉक्टर द्रुपाल की निर्भरता इंजेक्शन

Drupal 6 में, मेनू सिस्टम को बहु-चरणीय प्रक्रिया होने के लिए फिर से लिखा गया और फिर से लिखा गया। अब हम इस तरह से एक ही पेज कॉलबैक लागू करेंगे:

   function example_menu() {
       $items['node/%node/example'] = array(
         'page callback' => 'example_page',
         'page arguments' => array(1),
         // ...
       );
       return $items;
     }

     function example_page($node) {
       // Do useful stuff here.
     }

इस नए सेटअप में मेनू राउटर अधिक जटिल हो जाता है। बदले में, हालांकि, पेज कॉलबैक को नोड मिलता है, जिस पर यह निर्भर करता है कि इसे पास किया गया है, अर्थात् इसमें इंजेक्ट किया गया है। इससे हमें कई लाभ मिलते हैं।

ब्रोके (आर) के लिए जाओ

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.