स्प्रिंग फ्रेमवर्क में कौन से डिज़ाइन पैटर्न का उपयोग किया जाता है?
जवाबों:
उपयोग किए गए विभिन्न डिज़ाइन पैटर्न के भार हैं, लेकिन कुछ स्पष्ट हैं:
सिंगलटन - स्प्रिंग कॉन्फिग फाइलों में परिभाषित बीन्स डिफ़ॉल्ट रूप से सिंगललेट हैं।
टेम्प्लेट विधि - बॉयलरप्लेट दोहराया कोड (जैसे कि सफाई को बंद करने वाले कनेक्शन, आदि) से निपटने के लिए बड़े पैमाने पर उपयोग किया जाता है। उदाहरण के लिए JdbcTemplate , JmsTemplate , JpaTemplate ।
निम्नलिखित टिप्पणियों को अपडेट करें: MVC के लिए, आप MVC संदर्भ पढ़ना चाह सकते हैं
MVC में उपयोग के कुछ स्पष्ट पैटर्न:
मॉडल देखें नियंत्रक :-)। स्प्रिंग एमवीसी के साथ लाभ यह है कि आपके नियंत्रक POJOs हैं और सर्वलेट्स के विपरीत हैं। यह नियंत्रकों के आसान परीक्षण के लिए बनाता है। ध्यान देने वाली एक बात यह है कि नियंत्रक को केवल तार्किक दृश्य नाम वापस करने की आवश्यकता होती है, और दृश्य चयन एक अलग ViewResolver पर छोड़ दिया जाता है । इससे विभिन्न दृश्य प्रौद्योगिकियों के लिए नियंत्रकों का पुन: उपयोग करना आसान हो जाता है।
सामने नियंत्रक । स्प्रिंग डिस्पैचर सेलेट को यह सुनिश्चित करने के लिए प्रदान करता है कि आने वाला अनुरोध आपके नियंत्रकों को भेजा जाए।
व्यू हेल्पर - स्प्रिंग में कस्टम JSP टैग्स और वेलोसिटी मैक्रोज़ की एक संख्या है, जो कोड को विचारों में प्रस्तुति से अलग करने में सहायता करता है।
Foo
और आप Foo
प्रति संदर्भ उदाहरण देते हैं , आपको दो अलग-अलग ऑब्जेक्ट संदर्भ मिलेंगे। इसके बजाय, यहां लागू डिज़ाइन पैटर्न फ्लाईवेट है
DI चीज वास्तव में रणनीति पैटर्न के कुछ प्रकार है। जब भी आप कुछ तर्क / कार्यान्वयन के लिए विनिमेय होना चाहते हैं, तो आप आमतौर पर उस इंटरफ़ेस के अपने कस्टम कार्यान्वयन को तार करने के लिए मेजबान वर्ग पर एक इंटरफ़ेस और उपयुक्त सेटर विधि ढूंढते हैं।
वसंत सबसे अच्छा अभ्यास एपीआई पैटर्न का एक संग्रह है, आप उन्हें अपनी बाहों के रूप में लंबे समय तक खरीदारी की सूची लिख सकते हैं। जिस तरह से API को डिज़ाइन किया गया है वह आपको इन पैटर्नों का अनुसरण करने के लिए प्रोत्साहित करता है (लेकिन आपको बाध्य नहीं करता है), और आधे समय तक आप उनका अनुसरण किए बिना यह जान लेते हैं कि आप ऐसा कर रहे हैं।
सेवा लोकेटर पैटर्न - ServiceLocatorFactoryBean संदर्भ में सभी सेम की जानकारी रखता है। जब क्लाइंट कोड नाम का उपयोग करते हुए एक सेवा (बीन) के लिए कहता है, तो यह संदर्भ में उस बीन का पता लगाता है और उसे वापस करता है। क्लाइंट कोड को बीन का पता लगाने के लिए वसंत से संबंधित कोड लिखने की आवश्यकता नहीं है।
फैक्ट्री मेथड पैटर: किसी ऑब्जेक्ट के उदाहरण के लिए बीनफैक्टिंग सिंगलटन: इंस्टेंस टाइप किसी संदर्भ के लिए सिंगलटन हो सकता है प्रोटोटाइप: इंस्टेंस टाइप प्रोटोटाइप हो सकता है। बिल्डर पैटर्न: आप एक वर्ग में एक विधि को भी परिभाषित कर सकते हैं जो जटिल उदाहरण बनाने के लिए जिम्मेदार होगा।
स्प्रिंग कंटेनर बीन के दायरे (सिंगलटन, प्रोटोटाइप आदि) के आधार पर बीन ऑब्जेक्ट बनाता है। तो यह सार फैक्टरी पैटर्न को लागू करने जैसा दिखता है । वसंत के आंतरिक कार्यान्वयन में, मुझे यकीन है कि प्रत्येक गुंजाइश को विशिष्ट कारखाना प्रकार वर्ग से बांधा जाना चाहिए।