4.1 बिल्डर
बिल्डर हा एक जनरेटिव्ह डिझाइन पॅटर्न आहे जो संमिश्र ऑब्जेक्ट तयार करण्याचा मार्ग प्रदान करतो.
जटिल ऑब्जेक्टचे बांधकाम त्याच्या प्रतिनिधित्वापासून वेगळे करते जेणेकरून समान बांधकाम प्रक्रियेमुळे भिन्न प्रतिनिधित्व होऊ शकते.
![बिल्डर](https://cdn.codegym.cc/images/article/73f76c69-6b2a-4034-9207-93871bb16fae/800.jpeg)
सामर्थ्य:
- आपल्याला उत्पादनाचे अंतर्गत प्रतिनिधित्व बदलण्याची परवानगी देते;
- बांधकाम आणि सादरीकरण लागू करणार्या कोडला वेगळे करते;
- डिझाइन प्रक्रियेवर बारीक नियंत्रण देते.
कमकुवत बाजू:
- क्लिष्ट ऑब्जेक्ट तयार करण्यासाठी अल्गोरिदम ऑब्जेक्टमध्ये कोणते भाग आहेत आणि ते एकत्र कसे बसतात यावर अवलंबून नसावे;
- बांधकाम प्रक्रियेत बांधल्या जात असलेल्या वस्तूचे वेगवेगळे प्रतिनिधित्व प्रदान करणे आवश्यक आहे.
एक उत्तम उदाहरण म्हणजे HttpRequest वर्ग, ज्यामध्ये उपवर्ग HttpRequest.Builder आहे ज्याचा वापर HttpRequest वर्गाची उदाहरणे तयार करण्यासाठी आणि ते वैध असल्याची खात्री करण्यासाठी केला जाऊ शकतो.
4.2 आळशी आरंभ
आळशी आरंभीकरण हे एक प्रोग्रामिंग तंत्र आहे जेव्हा काही संसाधन-केंद्रित ऑपरेशन (ऑब्जेक्ट निर्मिती, मूल्य गणना) त्याचा परिणाम वापरण्यापूर्वी लगेच केले जाते.
अशा प्रकारे, आरंभिकरण "मागणीनुसार" केले जाते, आगाऊ नाही. एक समान कल्पना विविध क्षेत्रांमध्ये अनुप्रयोग शोधते: उदाहरणार्थ, ऑन-द-फ्लाय संकलन आणि जस्ट-इन-टाइम लॉजिस्टिक संकल्पना.
![आळशी आरंभ](https://cdn.codegym.cc/images/article/fa045df5-58b9-4433-bc35-45548f452406/800.jpeg)
आळशी प्रारंभाचे एक विशेष प्रकरण - त्यात प्रवेश करण्याच्या वेळी एखादी वस्तू तयार करणे - हे जनरेटिव्ह डिझाइन नमुन्यांपैकी एक आहे. हे सामान्यत: फॅक्टरी मेथड, लोनर आणि प्रॉक्सी सारख्या नमुन्यांसह वापरले जाते.
सामर्थ्य:
- जेव्हा खरोखर आवश्यक असेल तेव्हाच आरंभ केला जातो;
- अर्जाची प्रारंभिक सुरुवात प्रवेगक आहे: पुढे ढकलली जाऊ शकणारी प्रत्येक गोष्ट पुढे ढकलली आहे.
कमकुवत बाजू:
- ज्या क्रमाने ऑब्जेक्ट सुरू केले जातात ते स्पष्टपणे सेट करणे शक्य नाही;
- ऑब्जेक्टवर प्रथम प्रवेशास विलंब होतो, जेव्हा समांतरपणे दुसरे संसाधन-केंद्रित ऑपरेशन केले जाते तेव्हा ते गंभीर असू शकते. यामुळे, मल्टीथ्रेडेड सॉफ्टवेअर सिस्टममध्ये आळशी आरंभीकरण वापरण्याच्या योग्यतेचा काळजीपूर्वक विचार करणे आवश्यक आहे.
लक्षात ठेवा web.xml लिहिताना तुम्ही तेथे सर्व्हलेटचा प्रारंभ क्रम कसा निर्दिष्ट करू शकता? आळशी लोडिंगचा हा परिणाम आहे. टॉमकॅट सर्वलेट ऑब्जेक्ट्स पहिल्यांदा ऍक्सेस केल्यावर तयार करेल.
4.3 ऑब्जेक्ट पूल
ऑब्जेक्ट पूल हा पॅरेंट डिझाइन पॅटर्न आहे, आरंभ केलेल्या आणि वापरण्यास-तयार वस्तूंचा संच. जेव्हा सिस्टमला ऑब्जेक्टची आवश्यकता असते तेव्हा ती तयार केली जात नाही, परंतु पूलमधून घेतली जाते. जेव्हा एखादी वस्तू यापुढे आवश्यक नसते, तेव्हा ती नष्ट केली जात नाही परंतु पूलमध्ये परत येते.
![ऑब्जेक्ट पूल](https://cdn.codegym.cc/images/article/780f7d14-5ad3-42e2-bbfe-409cef49851e/512.jpeg)
ऑब्जेक्ट पूलिंगचा वापर कार्यप्रदर्शन सुधारण्यासाठी केला जातो जेव्हा एखादी वस्तू कामाच्या सुरूवातीस तयार होते आणि शेवटी ती नष्ट करणे महाग असते. जेव्हा वस्तू वारंवार तयार केल्या जातात आणि नष्ट केल्या जातात तेव्हा कार्यक्षमतेत सुधारणा विशेषतः लक्षात येते, परंतु त्यापैकी फक्त एक लहान संख्या एकाच वेळी अस्तित्वात असते.
ऑब्जेक्ट पूल उपयोगी असतो जेव्हा ऑब्जेक्टकडे मेमरी व्यतिरिक्त इतर संसाधने असतात, जसे की नेटवर्क सॉकेट. किंवा जर वस्तूंचा संग्रह संगणकाच्या मेमरीचा महत्त्वपूर्ण भाग घेतो आणि भरपूर "कचरा" तयार होतो.
जसे तुम्हाला आठवते, Tomcat प्रत्येक विनंती वेगळ्या धाग्यात कार्यान्वित करते. परंतु प्रत्येक वेळी थ्रेड नव्याने तयार केले जात नाहीत, परंतु थ्रेड पूलमध्ये साठवले जातात. हे विनंत्यांची जलद अंमलबजावणी करण्यास अनुमती देते: जेव्हा थ्रेडची आवश्यकता असते तेव्हा ते फक्त पूलमधून घेतले जाते. तसे, प्रश्न असा आहे: तुम्ही चालणारा धागा पूलमध्ये कसा टाकाल आणि पूलमधून कसा घ्याल?