7 सर्वात महत्वाचे सॉफ्टवेअर डिझाइन नमुने

सॉफ्टवेअर डिझाईन पॅटर्न्सच्या विषयावर सखोल खोल-जाण्यासाठी, सॉफ्टवेअर डिझाइन पॅटर्न्स: सी.एच. द्वारा निर्मित, विकसकांसाठी सर्वोत्कृष्ट सराव तपासा. अफझल, नेटफ्लिक्स, मायक्रोसॉफ्ट आणि ओरॅकल येथे अनेक वर्षांचा अनुभव असलेले एक ज्येष्ठ सॉफ्टवेअर अभियंता. खाली दिलेला बराचसा भाग त्याच्या अभ्यासक्रमातून सारांशित केला आहे.

रचनांचे नमुने का?

अलिकडच्या काळात प्रोग्रामिंग जगात डिझाईन पॅटर्न काही वादविवादाचे विषय बनले आहेत, मुख्यत: त्यांच्या समजल्या जाणार्‍या ‘अतिवापर’ मुळे कोड समजला जातो व समजणे व व्यवस्थापित करणे कठिण आहे.

हे समजून घेणे महत्वाचे आहे की डिझाईन पॅटर्न म्हणजे आपल्या कोडवर हॅफझार्डमध्ये लागू करण्यासाठी शॉर्टकट एकत्र कधीही हॅक केलेले नसतात. सॉफ्टवेअर अभियांत्रिकीमध्ये अस्सल समस्या सोडविण्याच्या क्षमतेला शेवटी पर्याय नाही.

तथापि, वस्तुस्थिती अशी आहे की योग्य परिस्थितींमध्ये आणि योग्य कारणास्तव वापरल्यास डिझाइन नमुने आश्चर्यकारकपणे उपयुक्त ठरू शकतात. रणनीतिकरित्या वापरल्यास, ते आधीपासूनच इतरांनी परिष्कृत केलेल्या पद्धतींचा वापर न करता प्रॉव्हर्बियल व्हीलला पुनर्निर्मिती करणे टाळण्याची परवानगी देऊन प्रोग्रामरला अधिक लक्षणीय कार्यक्षम बनवू शकतात. इतरांशी चर्चा करताना किंवा मोठ्या कार्यसंघांमध्ये कोड व्यवस्थापित करताना वारंवार समस्या आणि निराकरणे संकल्पित करण्यासाठी देखील ती एक उपयुक्त सामान्य भाषा प्रदान करतात.

असे म्हटल्याप्रमाणे, प्रत्येक नमुनामागील कसे आणि का हे का विकसकाद्वारे समजले जाते याची खात्री करणे ही एक महत्वाची चेतावणी आहे.

पुढील अ‍ॅडोशिवाय (सामान्यतेनुसार, अगदी कमीतकमी किमान):

सर्वात महत्वाचे डिझाइन नमुने

  1. एकल

सिंगलटोन पॅटर्नचा वापर वर्ग तयार करणे केवळ एका ऑब्जेक्टपर्यंत मर्यादित करण्यासाठी केला जातो. सिस्टममध्ये क्रियांचे समन्वय साधण्यासाठी जेव्हा (आणि केवळ एक) ऑब्जेक्ट आवश्यक असेल तेव्हा हे फायदेशीर ठरते. कॅशेस, थ्रेड पूल आणि रेजिस्ट्रीजसह वर्गाची केवळ एकच उदाहरणे अस्तित्त्वात येतील अशी अनेक उदाहरणे आहेत.

वर्गाची एखादी ऑब्जेक्ट आरंभ करणे क्षुल्लक आहे - परंतु केवळ एक ऑब्जेक्ट कधीही तयार होईल याची आम्ही खात्री कशी करू? उत्तर म्हणजे सिंगलटोन म्हणून परिभाषित करण्याच्या आमच्या कक्षाच्या कन्स्ट्रक्टरला ‘खाजगी’ बनविणे. अशा प्रकारे केवळ वर्गातील सदस्य खासगी कन्स्ट्रक्टरमध्ये प्रवेश करू शकतात आणि इतर कोणालाही नाही.

महत्वाचा विचार: खासगीऐवजी कन्स्ट्रक्टर संरक्षित करून सिंगलटन सबक्लास करणे शक्य आहे. हे काही परिस्थितींमध्ये योग्य असेल. या परिदृश्यांमध्ये घेतलेला एक दृष्टिकोन म्हणजे सबक्लासेसच्या सिंगलेटन्सची रजिस्टर तयार करणे आणि getInstance मेथड पॅरामीटरमध्ये घेऊ शकते किंवा इच्छित सिंगलटन परत मिळविण्यासाठी वातावरणीय चल वापरू शकेल. रेजिस्ट्री नंतर सिंगलटन ऑब्जेक्ट्सवर स्ट्रिंग नावे मॅपिंग ठेवते, ज्यात आवश्यकतेनुसार प्रवेश करता येते.

2. फॅक्टरी पद्धत

सामान्य कारखाना वस्तूंचे उत्पादन करते; सॉफ्टवेअर फॅक्टरी ऑब्जेक्ट्स तयार करते. आणि फक्त तेच नाही - ऑब्जेक्ट तयार करण्याचा नेमका वर्ग निर्दिष्ट केल्याशिवाय ते हे करते. हे पूर्ण करण्यासाठी ऑब्जेक्ट्स कन्स्ट्रक्टरला कॉल करण्याऐवजी फॅक्टरी मेथडवर कॉल करून तयार केले जातात.

सहसा, जावामध्ये ऑब्जेक्ट क्रिएशन अशा प्रकारे होते:

SomeClass someClassObject = नवीन सॉमक्लास ();

वरील पध्दतीची समस्या अशी आहे की सॉमक्लासच्या ऑब्जेक्टचा वापर करणारा कोड अचानक आता सॉमक्लासच्या ठोस अंमलबजावणीवर अवलंबून आहे. ऑब्जेक्ट्स तयार करण्यासाठी नवीन वापरण्यात काहीही गैर नाही परंतु हे आमच्या कोडला कंक्रीटच्या अंमलबजावणी वर्गाशी घट्टपणे जोडण्याच्या बॅगेजसह येते जे कधीकधी समस्याप्रधान होऊ शकते.

3. रणनीती

रणनीती पॅटर्न एखाद्या अ‍ॅबस्ट्रॅक्शन अंतर्गत संबंधित अल्गोरिदम गटबद्ध करण्यास अनुमती देते, जे क्लायंटमध्ये बदल न करता एक अल्गोरिदम किंवा पॉलिसी दुसर्‍यासाठी बदलू देते. एकल अल्गोरिदम थेट अंमलात आणण्याऐवजी कोडला रनटाइम सूचना प्राप्त होते की कोणत्या अल्गोरिदमचा समूह चालवावा हे निर्दिष्ट करते.

Ob. निरीक्षक

हा नमुना ऑब्जेक्ट्समधील एक ते अनेकांचा अवलंबन आहे जेणेकरून जेव्हा एखादी ऑब्जेक्ट स्टेट बदलते तेव्हा त्याचे सर्व अवलंबितांना सूचित केले जाते. हे विशेषतः त्यांच्या एका पद्धतीवर कॉल करून केले जाते.

साधेपणासाठी, आपण ट्विटरवर एखाद्याचे अनुसरण करता तेव्हा काय होते याचा विचार करा. आपण ट्विटरला आपण (निरीक्षक) आपण अनुसरण केलेल्या व्यक्तीचे (विषय) ट्विट अपडेट्स पाठविण्यासाठी विचारत आहात. या नमुन्यात दोन कलाकारांचा समावेश आहे, निरीक्षक ज्यास अद्यतनांमध्ये रस आहे आणि जो विषय अद्यतने तयार करतो.

एखाद्या विषयामध्ये बरेच निरीक्षक असू शकतात आणि ते अनेक नात्यांपैकी एक असू शकतात. तथापि, एखादा निरीक्षक इतर विषयांच्या अद्यतनांची सदस्यता घेण्यास स्वतंत्र आहे. आपण फेसबुक पृष्ठावरील बातम्यांच्या फीडची सदस्यता घेऊ शकता, हा विषय होईल आणि जेव्हा जेव्हा पृष्ठास नवीन पोस्ट असेल तेव्हा ग्राहक नवीन पोस्ट पाहू शकतील.

मुख्य विचार: अनेक विषय आणि काही निरीक्षकांच्या बाबतीत, प्रत्येक विषय स्वतंत्रपणे आपल्या निरीक्षकांना संग्रहित करत असल्यास, त्यात स्टोरेज खर्च वाढेल कारण काही विषय समान निरीक्षकांना बर्‍याच वेळा संग्रहित करतील.

5. बिल्डर

नावाप्रमाणेच, बिल्डर पॅटर्न ऑब्जेक्ट्स तयार करण्यासाठी वापरला जातो. काहीवेळा, आम्ही तयार केलेल्या वस्तू जटिल असू शकतात, कित्येक उप-ऑब्जेक्ट्सपासून बनवतात किंवा त्यास विस्तृत बांधकाम प्रक्रियेची आवश्यकता असते. बिल्डर पॅटर्नचा वापर करून जटिल प्रकार तयार करण्याचा व्यायाम सुलभ केला जाऊ शकतो. एक संयुक्त किंवा एकल ऑब्जेक्ट म्हणजे सामान्यतः बिल्डर तयार करतो.

मुख्य विचार: बिल्डर पॅटर्न कदाचित ‘अ‍ॅबस्ट्रॅक्ट फॅक्टरी’ पॅटर्न प्रमाणेच वाटेल परंतु एक फरक असा आहे की बिल्डर पॅटर्न ऑब्जेक्ट स्टेप बाय स्टेप बनवते तर अ‍ॅबस्ट्रॅक्ट फॅक्टरी पॅटर्न ऑब्जेक्टला एकाच जागी परत करते.

6. अ‍ॅडॉप्टर

हे एका वर्गाचे इंटरफेस दुसर्‍या वर्गात रूपांतरित करून विसंगत वर्ग एकत्र कार्य करण्यास अनुमती देते. त्यास एक भाषांतरकार म्हणून विचार करा: जेव्हा सामान्य भाषा न बोलणारी दोन राज्ये एकत्र येतात तेव्हा सहसा इंटरप्रिटर दोघांच्या मध्ये बसून संभाषणाचे भाषांतर करते जेणेकरून संप्रेषण सक्षम होईल.

आपल्याकडे दोन अनुप्रयोग असल्यास, एकाला थोड्या वेळाने XML म्हणून आउटपुटसह दुसरे JSON इनपुट आवश्यक असेल तर ते अखंडपणे कार्य करण्यासाठी आपल्याला दोघांमधील अ‍ॅडॉप्टरची आवश्यकता असेल.

7. राज्य

राज्य पॅटर्न मशीनमध्ये असू शकतात अशा वेगवेगळ्या राज्यांचे आकलन करते आणि एखाद्या वस्तूची अंतर्गत स्थिती बदलते तेव्हा त्याचे वर्तन बदलू देते. यंत्र किंवा संदर्भ, ज्यास पॅटर्न-स्पीक म्हटले जाते, त्यावर कार्य केले जाऊ शकते ज्यामुळे ते वेगवेगळ्या राज्यात जाऊ शकते. पॅटर्नचा वापर केल्याशिवाय कोड अतुलनीय आणि जर-अन्यथा शर्तींनी भरला जाईल.

शिकत रहायचे आहे का?

सॉफ्टवेअर डिझाइन नमुन्यांसह: विकसकांसाठी सर्वोत्कृष्ट पद्धती केवळ सिद्धांत वाचण्यापेक्षा आपल्याला अधिक करण्याची संधी मिळेल. आपण वास्तविक समस्यांमध्ये खोलवर उतरून जाणे आणि वास्तविक-जीवनाच्या उदाहरणांच्या उदाहरणासह व्यावहारिक निराकरणे समजण्यास सक्षम व्हाल.

हा कोर्स गॅंग ऑफ फोरच्या लोकप्रिय पुस्तकावर आधारित आहे, परंतु संवादात्मक, डायजेस्टिव्ह-डायजेस्ट स्वरूपात सादर केला आहे. आपण पुस्तकातून 23 प्रसिद्ध डिझाइन नमुन्यांची परस्पर संवाद साधू शकाल, 3 की डिझाइन नमुना प्रकार (सर्जनशील, रचनात्मक आणि वर्तणूक) योग्य अनुप्रयोग जाणून घ्या आणि आपल्या स्वत: च्या प्रकल्पांमध्ये या डिझाइन नमुन्यांचा समावेश करणे शिकाल.

हे आता पहा.

मूळतः 7 नोव्हेंबर 2018 रोजी ब्लॉग.educative.io वर प्रकाशित केले.