7 सबसे महत्वपूर्ण सॉफ्टवेयर डिजाइन पैटर्न

सॉफ़्टवेयर डिज़ाइन पैटर्न के विषय में व्यापक गहन-गोता लगाने के लिए, सॉफ़्टवेयर डिज़ाइन पैटर्न देखें: डेवलपर्स के लिए सर्वोत्तम अभ्यास, C.H. नेटफ्लिक्स, माइक्रोसॉफ्ट और ओरेकल में कई वर्षों के अनुभव के साथ एक अनुभवी सॉफ्टवेयर इंजीनियर अफजल। उनके पाठ्यक्रम से नीचे बहुत संक्षेप में प्रस्तुत किया गया है।

क्यों डिजाइन पैटर्न?

डिज़ाइन पैटर्न हाल के समय में प्रोग्रामिंग दुनिया में कुछ विवादों का एक उद्देश्य बन गया है, जिसका मुख्य कारण उनके कथित-ओवर-यूज़ ’कोड के लिए अग्रणी है जिसे समझना और प्रबंधित करना कठिन हो सकता है।

यह समझना महत्वपूर्ण है कि डिज़ाइन पैटर्न को कभी भी एक कोड में हैक करने के लिए एक साथ, अपने कोड में ard एक-आकार-फिट-सभी ’तरीके से लागू करने के लिए शॉर्टकट को हैक करने के लिए नहीं था। सॉफ्टवेयर इंजीनियरिंग में वास्तविक समस्या सुलझाने की क्षमता का कोई विकल्प नहीं है।

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

यह कहा जा रहा है, एक महत्वपूर्ण चेतावनी यह सुनिश्चित करना है कि प्रत्येक पैटर्न के पीछे कैसे और क्यों डेवलपर द्वारा समझा जाता है।

आगे की हलचल के बिना (सामान्य महत्व के क्रम में, सबसे कम से कम):

सबसे महत्वपूर्ण डिजाइन पैटर्न

  1. एकाकी वस्तु

सिंगलटन पैटर्न का उपयोग किसी वर्ग के निर्माण को केवल एक वस्तु तक सीमित करने के लिए किया जाता है। यह फायदेमंद है जब सिस्टम में क्रियाओं के समन्वय के लिए एक (और केवल एक) वस्तु की आवश्यकता होती है। ऐसे कई उदाहरण हैं जहां एक वर्ग का केवल एक ही उदाहरण मौजूद होना चाहिए, जिसमें कैश, थ्रेड पूल और रजिस्ट्रियां शामिल हैं।

किसी वर्ग की किसी वस्तु को शुरू करने के लिए यह तुच्छ है - लेकिन हम यह कैसे सुनिश्चित करते हैं कि केवल एक ही वस्तु बनती है? इसका उत्तर निर्माणकर्ता को उस वर्ग के लिए 'निजी' बनाना है जिसे हम एक सिंगलटन के रूप में परिभाषित करना चाहते हैं। इस तरह, केवल कक्षा के सदस्य ही निजी कंस्ट्रक्टर तक पहुंच सकते हैं और कोई नहीं।

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

2. फैक्टरी विधि

एक सामान्य कारखाना माल पैदा करता है; एक सॉफ्टवेयर फैक्ट्री वस्तुओं का उत्पादन करती है। और सिर्फ इतना ही नहीं - यह ऐसा करने के लिए ऑब्जेक्ट के सटीक वर्ग को बनाए बिना निर्दिष्ट करता है। इसे पूरा करने के लिए, किसी निर्माता को कॉल करने के बजाय फ़ैक्टरी विधि को कॉल करके ऑब्जेक्ट बनाए जाते हैं।

आमतौर पर, जावा में ऑब्जेक्ट निर्माण ऐसा होता है:

SomeClass someClassObject = new SomeClass ();

उपर्युक्त दृष्टिकोण के साथ समस्या यह है कि कोड, कुछ क्लैबस के ठोस कार्यान्वयन पर निर्भर हो जाता है। ऑब्जेक्ट बनाने के लिए नए का उपयोग करने में कुछ भी गलत नहीं है, लेकिन यह हमारे कोड को ठोस कार्यान्वयन वर्ग में कसकर युग्मित करने के सामान के साथ आता है, जो कभी-कभी समस्याग्रस्त हो सकता है।

3. रणनीति

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

4. प्रेक्षक

यह पैटर्न वस्तुओं के बीच एक-से-कई निर्भरता है ताकि जब कोई वस्तु राज्य बदलती है, तो उसके सभी आश्रितों को सूचित किया जाए। यह आमतौर पर उनके तरीकों में से एक को कॉल करके किया जाता है।

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

एक विषय में कई पर्यवेक्षक हो सकते हैं और कई संबंधों के लिए एक है। हालांकि, एक पर्यवेक्षक अन्य विषयों से भी अपडेट की सदस्यता के लिए स्वतंत्र है। आप एक फेसबुक पेज से समाचार फ़ीड की सदस्यता ले सकते हैं, जो विषय होगा और जब भी पृष्ठ में एक नया पद होगा, तो ग्राहक को नया पोस्ट दिखाई देगा।

मुख्य विचार: कई विषयों और कुछ पर्यवेक्षकों के मामले में, यदि प्रत्येक विषय अपने पर्यवेक्षकों को अलग से संग्रहीत करता है, तो यह भंडारण लागत में वृद्धि करेगा क्योंकि कुछ विषयों में एक ही पर्यवेक्षक को कई बार संग्रहीत किया जाएगा।

5. बिल्डर

जैसा कि नाम का अर्थ है, एक बिल्डर पैटर्न का उपयोग वस्तुओं के निर्माण के लिए किया जाता है। कभी-कभी, हमारे द्वारा बनाई गई वस्तुएं जटिल हो सकती हैं, कई उप-वस्तुओं से बनी होती हैं या एक विस्तृत निर्माण प्रक्रिया की आवश्यकता होती है। बिल्डर पैटर्न का उपयोग करके जटिल प्रकार बनाने की कवायद को सरल बनाया जा सकता है। एक समग्र या एक समग्र वस्तु वह है जो एक बिल्डर आमतौर पर बनाता है।

मुख्य विचार: बिल्डर पैटर्न ’एब्सट्रैक्ट फैक्ट्री’ पैटर्न के समान प्रतीत हो सकता है, लेकिन एक अंतर यह है कि बिल्डर पैटर्न स्टेप द्वारा एक ऑब्जेक्ट स्टेप बनाता है जबकि एब्सट्रैक्ट फ़ैक्टरी पैटर्न ऑब्जेक्ट को एक बार में लौटाता है।

6. एडॉप्टर

यह असंगत कक्षाओं को एक वर्ग के इंटरफेस को दूसरे में परिवर्तित करके एक साथ काम करने की अनुमति देता है। एक अनुवादक के रूप में इसके बारे में सोचें: जब दो राष्ट्रों के प्रमुख जो आम भाषा में मिलते नहीं हैं, आमतौर पर एक दुभाषिया दोनों के बीच बैठता है और बातचीत का अनुवाद करता है, इस प्रकार संचार को सक्षम करता है।

यदि आपके पास दो एप्लिकेशन हैं, तो एक आउटपुट के साथ एक्सएमएल के रूप में अन्य JSON इनपुट की आवश्यकता है, तो आपको उन्हें मूल रूप से काम करने के लिए दोनों के बीच एक एडाप्टर की आवश्यकता होगी।

7. राज्य

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

सीखते रहना चाहते हैं?

सॉफ़्टवेयर डिज़ाइन पैटर्न के साथ: डेवलपर्स के लिए सर्वश्रेष्ठ अभ्यास आपके पास केवल सिद्धांत को पढ़ने से अधिक करने का मौका होगा। आप वास्तविक समस्याओं के बारे में गहराई से जान पाएंगे और वास्तविक जीवन के कोड उदाहरणों के साथ व्यावहारिक समाधान समझ पाएंगे।

कोर्स गैंग ऑफ़ फोर द्वारा लोकप्रिय पुस्तक पर आधारित है, लेकिन एक इंटरैक्टिव, आसान-पचाने वाले प्रारूप में प्रस्तुत किया गया है। आप पुस्तक से 23 प्रसिद्ध डिजाइन पैटर्न को अंतःक्रियात्मक रूप से मास्टर करेंगे, 3 प्रमुख डिजाइन पैटर्न प्रकार (रचनात्मक, संरचनात्मक और व्यवहार) के उचित अनुप्रयोगों को सीखेंगे, और इन डिजाइन पैटर्न को अपनी परियोजनाओं में शामिल करना सीखेंगे।

अब इसे जांचें।

7 नवंबर 2018 को मूल रूप से blog.educative.io पर प्रकाशित।