स्प्रिंग फ्रेमवर्क में कौन से डिज़ाइन पैटर्न का उपयोग किया जाता है? [बन्द है]


90

स्प्रिंग फ्रेमवर्क में कौन से डिज़ाइन पैटर्न का उपयोग किया जाता है?


इसमें 10 से अधिक पैटर्न शामिल हैं..एमवीसी, फ्रंट कंट्रोलर, व्यू हेल्पर, सिंगलटन, प्रोटोटाइप, फैक्टरी आदि। javabench.in/2012/02/design-patterns-being-used-in-spring.html
राउल

जवाबों:


74

उपयोग किए गए विभिन्न डिज़ाइन पैटर्न के भार हैं, लेकिन कुछ स्पष्ट हैं:

  • प्रॉक्सी - AOP , और रीमोटिंग में भारी उपयोग किया गया ।

  • सिंगलटन - स्प्रिंग कॉन्फिग फाइलों में परिभाषित बीन्स डिफ़ॉल्ट रूप से सिंगललेट हैं।

  • टेम्प्लेट विधि - बॉयलरप्लेट दोहराया कोड (जैसे कि सफाई को बंद करने वाले कनेक्शन, आदि) से निपटने के लिए बड़े पैमाने पर उपयोग किया जाता है। उदाहरण के लिए JdbcTemplate , JmsTemplate , JpaTemplate


निम्नलिखित टिप्पणियों को अपडेट करें: MVC के लिए, आप MVC संदर्भ पढ़ना चाह सकते हैं

MVC में उपयोग के कुछ स्पष्ट पैटर्न:

  • मॉडल देखें नियंत्रक :-)। स्प्रिंग एमवीसी के साथ लाभ यह है कि आपके नियंत्रक POJOs हैं और सर्वलेट्स के विपरीत हैं। यह नियंत्रकों के आसान परीक्षण के लिए बनाता है। ध्यान देने वाली एक बात यह है कि नियंत्रक को केवल तार्किक दृश्य नाम वापस करने की आवश्यकता होती है, और दृश्य चयन एक अलग ViewResolver पर छोड़ दिया जाता है । इससे विभिन्न दृश्य प्रौद्योगिकियों के लिए नियंत्रकों का पुन: उपयोग करना आसान हो जाता है।

  • सामने नियंत्रक । स्प्रिंग डिस्पैचर सेलेट को यह सुनिश्चित करने के लिए प्रदान करता है कि आने वाला अनुरोध आपके नियंत्रकों को भेजा जाए।

  • व्यू हेल्पर - स्प्रिंग में कस्टम JSP टैग्स और वेलोसिटी मैक्रोज़ की एक संख्या है, जो कोड को विचारों में प्रस्तुति से अलग करने में सहायता करता है।


धन्यवाद, स्प्रिंग एमवीसी मॉड्यूल में उपयोग किए जाने वाले डिज़ाइन पैटर्न क्या हैं?
टोनी

10
मुझे नहीं लगता कि स्प्रिंग सेम के लिए सिंगलटन लागू करता है। ध्यान दें कि एक सिंगलटन स्कॉप्ड बीन में प्रति एप्लिकेशन संदर्भ में एक ही उदाहरण होगा । इसलिए, यदि आपके आवेदन में दो स्प्रिंग संदर्भ हैं, तो वे एक ही सिंगलटन बीन को लोड करते हैं Fooऔर आप Fooप्रति संदर्भ उदाहरण देते हैं , आपको दो अलग-अलग ऑब्जेक्ट संदर्भ मिलेंगे। इसके बजाय, यहां लागू डिज़ाइन पैटर्न फ्लाईवेट है
लुइगी मेंडोज़ा

@ लुइगी मेंडोज़ा का मतलब है कि वसंत में सिंगलटन ऑब्जेक्ट्स नहीं हैं? कृपया मुझे कुछ स्पष्टीकरण के साथ समझाएं।
कुमारसन पेरुमल

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

मॉडल व्यू कंट्रोलर, फ्रंट कंट्रोलर और व्यू के लिए लिंक oracle.com/technetwork/java/index.html पर ले जाता है । क्या आप कार्य लिंक के साथ उत्तर को अपडेट कर सकते हैं?
स्प्रिंगलेनर

12

और निश्चित रूप से निर्भरता इंजेक्शन, या IoC (नियंत्रण का उलटा), जो पूरे बीनफैक्टरी / ApplicationConitxt सामान के लिए केंद्रीय है।


10

DI चीज वास्तव में रणनीति पैटर्न के कुछ प्रकार है। जब भी आप कुछ तर्क / कार्यान्वयन के लिए विनिमेय होना चाहते हैं, तो आप आमतौर पर उस इंटरफ़ेस के अपने कस्टम कार्यान्वयन को तार करने के लिए मेजबान वर्ग पर एक इंटरफ़ेस और उपयुक्त सेटर विधि ढूंढते हैं।


मास्टर से ही जवाब दें। @ ओलिवर क्या आप यहां अधिक पैटर्न बता सकते हैं?
गौरव

6

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


3

सेवा लोकेटर पैटर्न - ServiceLocatorFactoryBean संदर्भ में सभी सेम की जानकारी रखता है। जब क्लाइंट कोड नाम का उपयोग करते हुए एक सेवा (बीन) के लिए कहता है, तो यह संदर्भ में उस बीन का पता लगाता है और उसे वापस करता है। क्लाइंट कोड को बीन का पता लगाने के लिए वसंत से संबंधित कोड लिखने की आवश्यकता नहीं है।


2

ऑब्जर्वर-ऑब्जर्वेबल: इसका उपयोग ApplicationContext के ईवेंट तंत्र में किया जाता है


1

फैक्ट्री पैटर्न का उपयोग बीनफैक्टिंग और एप्लिकेशन संदर्भ के माध्यम से सेम को लोड करने के लिए भी किया जाता है।


1

फैक्ट्री मेथड पैटर: किसी ऑब्जेक्ट के उदाहरण के लिए बीनफैक्टिंग सिंगलटन: इंस्टेंस टाइप किसी संदर्भ के लिए सिंगलटन हो सकता है प्रोटोटाइप: इंस्टेंस टाइप प्रोटोटाइप हो सकता है। बिल्डर पैटर्न: आप एक वर्ग में एक विधि को भी परिभाषित कर सकते हैं जो जटिल उदाहरण बनाने के लिए जिम्मेदार होगा।


0

स्प्रिंग कंटेनर बीन के दायरे (सिंगलटन, प्रोटोटाइप आदि) के आधार पर बीन ऑब्जेक्ट बनाता है। तो यह सार फैक्टरी पैटर्न को लागू करने जैसा दिखता है । वसंत के आंतरिक कार्यान्वयन में, मुझे यकीन है कि प्रत्येक गुंजाइश को विशिष्ट कारखाना प्रकार वर्ग से बांधा जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.