Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Creative Coding
Code

WordPress में डिजाइन पैटर्न: एक परिचय

by
Length:MediumLanguages:
This post is part of a series called Design Patterns in WordPress.
Design Patterns in WordPress: The Singleton Pattern

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

उन लोगों के लिए जिनके पास सॉफ्टवेयर इंजीनियरिंग में व्यापक बैकग्राउंड है, डिजाइन पैटर्न परिचित क्षेत्र होना चाहिए; हालांकि, डेवलपर्स का एक पूरा ग्रुप है - खासकर वेब डेवलपमेंट समुदाय में - जो डिज़ाइन पैटर्न से आवश्यक रूप से परिचित नहीं हैं (भले ही उन्होंने संभवतः उन्हें उपयोग किया हो!)।

इस सीरीज में, हम डिज़ाइन पैटर्न पर विशेष रूप से WordPress के संदर्भ में, वे कैसे उपयोगी हैं, और कुछ व्यावहारिक उदाहरणों को देखने जा रहे हैं जिन्हें हम अपनी थीम्स और प्लगइन में उपयोग कर सकते हैं।

सीरीज का अंतिम लक्ष्य डिजाइन पैटर्न के बारे में एक ठोस परिभाषा प्रदान करना है, वे उपयोगी क्यों हैं, WordPress कोर में उनका उपयोग कैसे किया जाता है, और फिर दो लोकप्रिय उदाहरणों की समीक्षा करें जिन्हें हम आसानी से अपने काम में नियोजित (employ) कर सकते हैं।

कुछ व्यावहारिक उदाहरणों को देखने से पहले, आइए डिज़ाइन पैटर्न को परिभाषित करें, और WordPress कोर में उनका उपयोग कैसे किया जाता है इसका एक उदाहरण देखें।


डिजाइन पैटर्न की परिभाषा

आप में से उन लोगों के लिए जिन्होंने इसे कभी नहीं सुना है या जिन्होंने कभी भी डिजाइन पैटर्न का उपयोग नहीं किया है, यह समझना महत्वपूर्ण है कि वे वास्तव में हमारे काम में उनका उपयोग शुरू करने से पहले जान ले की यह क्या हैं।

Wikipedia निम्नलिखित परिभाषा प्रदान करता है:

आर्किटेक्चर और कंप्यूटर विज्ञान में एक डिजाइन पैटर्न विशेषज्ञता के एक विशेष क्षेत्र में एक डिजाइन समस्या के समाधान को डोक्युमेंटिंग करने का एक औपचारिक तरीका है। एक विशेष फील्ड से संबंधित डिजाइन पैटर्न का एक संगठित कलेक्शन को पैटर्न लैंग्वेज कहा जाता है।

शायद एक और सरलीकृत परिभाषा होगी:

एक पैटर्न एक ऐसा डिज़ाइन है जिसे किसी विशिष्ट स्थिति में किसी समस्या पर लागू किया जा सकता है।

यदि यह अभी भी स्पष्ट नहीं है, तो इस तरह से सोचें:

  • जब भी आप सॉफ़्टवेयर का एक हिस्सा बना रहे हों, तो आपको यह पहचानने की संभावना है कि आप किसी समस्या को हल कर रहे हैं जिसे आपने पहले ही हल कर लिया है। इस प्रकार, आप जानते हैं कि इसे कैसे हल करें।
  • स्वाभाविक रूप से, समस्या का समाधान थोड़ा अधिक जनरलाइज़ फॉर्म में होगा जो कि इस पर निर्भर होता है कि आपने इसे पहले कैसे अप्लाई किया है।
  • समाधान के इस जनरलाइज़ फॉर्म को डिजाइन पैटर्न माना जा सकता है।

सामान्य इम्प्लीमेंटेशन और आर्किटेक्चर बिल्कुल वैसा ही दिखाई देगा; हालांकि, इम्प्लीमेंटेशन के स्पेसिफिक्स प्रोजेक्ट-टू-प्रोजेक्ट से स्वाभाविक रूप से भिन्न होंगे, लेकिन यह केवल बीस्ट का नेचर है।

आने वाले सेक्शंस और आने वाले आर्टिकल्स में, हम इसे थोड़ा अधिक विस्तार से देखेंगे।


WordPress में डिजाइन पैटर्न

यदि आपने हुक सिस्टम से जुड़े किसी प्रकार का WordPress डेवलपमेंट किया है - यानी, आपने पूरे प्लगइन, थीम, या यहां तक कि एक साधारण फ़ंक्शन लिखा है और add_action या add_filter फ़ंक्शंस का लाभ उठाया है - तो आपने डिज़ाइन पैटर्न का उपयोग किया है।

WordPress जिसे उपयोग करता है उसे इवेंट-संचालित डिज़ाइन पैटर्न कहा जाता है। इवेंट-संचालित डिज़ाइन पैटर्न के कई वेरिएशन हैं जिनमें से एक की हम क्षणिक रूप से समीक्षा करेंगे, लेकिन पैटर्न की जानकारी सभी उसी के सामान हैं:

  • पैटर्न का एक हिस्सा जो पब्लिशर के रूप में जाना जाता है इम्प्लीमेंट करता है
  • पैटर्न का एक हिस्सा जो सब्सक्राइबर के रूप में जाना जाता है इम्प्लीमेंट करता है

आम तौर पर कहा जाए तो, पब्लिशर एक संदेश ब्रॉडकास्ट करता है कि सभी ऑब्जेक्ट्स जिन्हे किसी विशेष पब्लिशर के साथ सब्सक्राइब किया गया हो उनके साथ कुछ हुआ है

इस पर ध्यान देने का एक और तरीका यह है कि, सॉफ्टवेयर में, जब भी कुछ होता है तो हम कहते हैं कि एक इवेंट को रेज किया जाता है। वेब डेवलपमेंट में शायद जो सबसे आम जगह है जो जावास्क्रिप्ट में है जैसे कि माउस पर क्लिक किया जा रहा है, कीबोर्ड पर एक key दबाई जा रही है, या कुछ इसी तरह का।

फिर हम उन फंक्शन्स को लिखते हैं जो उन फंक्शन्स को संभालते हैं, और इन फंक्शन्स को उचित रूप से ईवेंट हैंडलर के रूप में रेफेर किया जाता है क्योंकि जब कोई इवेंट होता है तो वे केस को संभालने के लिए जिम्मेदार होते हैं।

बहुत जटिल नहीं है, है ना? ईमानदारी से, कभी-कभी मुझे लगता है कि वास्तविक इम्प्लीमेंटेशन की तुलना में टर्मिनोलॉजी अधिक भ्रमित हो सकती है।

तो वैसे भी, WordPress के संदर्भ में - या किसी भी वेब एप्लिकेशन, उस मामले के लिए - इवेंट्स key प्रेस या माउस क्लिक तक ही सीमित नहीं हैं। इसके बजाए, यह पेज लोड लाइफसाइकिल के विभिन्न हिस्सों के दौरान भी हो सकता है, जब डाटाबेस को डेटा लिखा जाता है, जब डेटाबेस को डेटा पढ़ा जाता है, और इसी तरह और भी।

आखिरकार, आप पैटर्न को इम्प्लीमेंट कर सकते हैं, हालांकि आप ऐसा चाहते हैं ताकि आप हुक प्रदान कर सकें जिसमें डेवलपर्स जल्द ही इवेंट्स को फायर करने के लिए काम कर सकते हैं।

यह हमें पूरे सर्कल को WordPress 'आर्किटेक्चर पर वापस लाता है: हुक पूरे कोड में रखे जाते हैं जैसे कि जब भी कोई इवेंट होता है (यानी, जब भी कोई इवेंट होता है) हम किसी फ़ंक्शन को फायर करने के लिए रजिस्टर करने में सक्षम होते हैं।


एक इवेंट-ड्रिवेन आर्किटेक्चर पर एक नजर: ऑब्जर्वर पैटर्न

कई इवेंट-ड्रिवेन डिजाइन पैटर्न हैं, जिनमें से एक आब्जर्वर पैटर्न के रूप में जाना जाता है। यह विशेष पैटर्न पब्लिशर-सब्सक्राइबर पैटर्न या अधिक संक्षेप में, Pub-Sub के रूप में भी जाना जाता है।

इस पैटर्न के सबसे सरल इम्प्लीमेंटेशन में, एक सिंगल पब्लिशर है जो मैसेज को एक या कई सब्सक्राइबर को प्रसारित करने के लिए ज़िम्मेदार है। सब्सक्राइबर पब्लिशर के साथ खुद को रजिस्टर करने के लिए ज़िम्मेदार हैं, और फिर पब्लिशर मैसेज भेजने या सभी सब्सक्राइबर पर एक्शन करने के लिए ज़िम्मेदार है।

एक उच्च स्तरीय डायग्राम कुछ इस तरह दिखता है:

WordPress Design Patterns

कोड पर्सपेक्टिव से, पब्लिशर को तीन चीजों की आवश्यकता होती है:

  1. सब्सक्राइबर की एक लिस्ट बनाए रखने का एक तरीका
  2. सब्सक्राइबर्स को खुद को रजिस्टर करने का एक तरीका
  3. सभी सब्सक्राइबर्स को एक मैसेज ब्रॉडकास्ट करने का एक तरीका

इसी तरह, सब्सक्राइबर को दो चीजें करने में सक्षम होना चाहिए:

  1. पब्लिशर के साथ खुद को रजिस्टर करें
  2. जब पब्लिशर इसे मैसेज भेजता है तो वैकल्पिक रूप से एक्शन लें

ऐसे कई तरीके हैं जिनमें इसे इम्प्लीमेंट किया जा सकता है, लेकिन सभी इंटेंट और पर्पस के लिए और उदाहरण को अपेक्षाकृत सरल रखने के लिए, मान लीजिए कि सब्सक्राइबर स्वयं को आब्जर्वर को register मेथड के साथ पब्लिशर के साथ रजिस्टर करेंगे और फ़ंक्शन एक रिफरेन्स स्वीकार करता है सब्स्क्राइबर और प्रत्येक सब्स्क्राइबर के पास update मेथड है जिसे मैसेज ब्रॉडकास्ट करते समय पब्लिशर कॉल करता है।

पब्लिशर कोड

ऊपर दिया गया कोड उतना सरल है जितना हम इसे बना सकते हैं:

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

याद रखें, इसका उद्देश्य केवल एक उदाहरण प्रदान करना है कि एक साधारण आब्जर्वर कैसा दिख सकता है।

सब्सक्राइब कोड

एक पब्लिशर बनाना वास्तव में इम्प्लीमेंटेशन का केवल आधा है। याद रखें, हमें कुछ ऐसा होना चाहिए जो वास्तव में, आपको पता है, जब भी कुछ होता है तो एक्शन करने के लिए पब्लिशर को सब्सक्राइब करता है।

यह वह जगह है जहां उपयुक्त नामित सब्सक्राइबर खेल में आता है।

संक्षेप में, यह ही है। ऊपर नोटिस कि update फ़ंक्शन के इम्प्लीमेंटेशन को वास्तव में परिभाषित नहीं किया गया है। ऐसा इसलिए है क्योंकि यह हमें इस विशिष्ट उदाहरण के लिए यूनिक बिहेवियर प्रदान करने की क्षमता देता है।

लेकिन याद रखें, WordPress कोर में बहुत सारे कोड हैं जो ऑब्जेक्ट-ओरिएंटेड नहीं हैं। इसके बजाए, यह प्रोसीज़रल है। इस प्रकार, इस तरह के पैटर्न के इम्प्लीमेंटेशन से थोड़ा भिन्न होता है।

उदाहरण के लिए, WordPress में एक एनालॉजी (analogy) इस तरह कुछ होगी:

ध्यान दें कि सिंटेक्स थोड़ा अलग है, लेकिन हम अनिवार्य रूप से बिलकुल वैसा ही काम कर रहा हैं:

  • हमारे पास सब्सक्राइब फ़ंक्शन है - my_custom_subscriber - और यह the_content ईवेंट के साथ रजिस्टर है
  • जब the_content फ़ंक्शन फायर होता है, तो हमारा कस्टम फ़ंक्शन भी फायर हो जाएगा।

कुछ भी जटिल नहीं है, मुझे उम्मीद है।

इस सीरीज के गोल्स में से एक न केवल डिजाइन पैटर्न के कुछ उदाहरण प्रदान करना है और उन्हें कैसे इम्प्लीमेंट करना है, लेकिन वे मौजूदा सिस्टम में पहले ही मौजूद हैं।


पैटर्न जिसकी हम जांच करेंगे

इवेंट-ड्रिवेन पैटर्न के अलावा हमने ऊपर की जांच की है, हम भी दो पैटर्नों पर एक नज़र डालने जा रहे हैं जो आम, व्यावहारिक और हमारे दिन-प्रतिदिन के काम में बहुत उपयोगी हैं।

विशेष रूप से, हम निम्नलिखित पैटर्न पर एक नज़र डालने जा रहे हैं:

  1. सिंगलटन पैटर्न. ऑब्जेक्ट ओरिएंटेड डिजाइन में, सिंगल पैटर्न सुनिश्चित करता है कि क्लास का केवल एक ही उदाहरण बनाया गया है। यह उपयोगी है ताकि हम आकस्मिक रूप से डेटा के अपने सेट को बनाए रखने के कई इंस्टैंस नहीं बनाते हैं, अंत में एक प्रोजेक्ट की लाइफ साइकिल के दौरान विरोधाभासी परिणाम दे रहे हैं।
  2. सिंपल फैक्टरी पैटर्न. यदि आपके पास क्लासेज का संग्रह है, जिनमें से प्रत्येक को एक विशिष्ट प्रकार के डेटा को संभालने के लिए डिज़ाइन किया गया है (जैसा कि एक बड़ी क्लास बनाये उसके उलट), तो सिंपल फैक्टरी पैटर्न आने वाले डेटा को देखने के लिए उपयोगी होता है और फिर डेटा प्रोसेसिंग के लिए उचित क्लास का इंस्टैंस रीटर्न करता है।

जाहिर है, सॉफ्टवेयर के बारे में बात करना केवल डायग्राम और/या कोड के बारे में बात करना नहीं बल्कि उससे कहीं अधिक है, इसलिए हम उन दोनों आर्टिकल्स के आगामी सेट में एक नज़र डालेंगे।


निष्कर्ष

जैसा कि आप देख सकते हैं, डिजाइन पैटर्न के कांसेप्ट बहुत जटिल नहीं है और हमारे काम में उनका उपयोग करके बहुत कुछ प्राप्त किया जा सकता है। डिजाइनरों के पैटर्न का उपयोग करने के लिए संभवतः डेवलपर्स का सबसे बड़ा चुनौती डिजाइन पैटर्न का उपयोग करना है।

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

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.