2009-04-16 10 views
66

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

+0

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

+0

डिजाइन पैटर्न- एमवीसी पैटर्न, प्रॉक्सी पैटर्न, फैक्टरी पैटर्न, सिंगलटन पैटर्न, टेम्पलेट विधि पैटर्न, फ्रंटकंट्रोलर पैटर्न, देखें हेल्पर पैटर्न, प्रोटोटाइप पैटर्न आईडी/आईओसी पैटर्न। संदर्भ-http: //javainuse.com/spring/spring-design-patterns – Gordan

उत्तर

51

इस्तेमाल किया विभिन्न डिजाइन पैटर्न का भार कर रहे हैं, लेकिन वहाँ कुछ स्पष्ट हैं:

  • प्रॉक्सी - AOP, और remoting में भारी इस्तेमाल किया।

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

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


अद्यतन टिप्पणियां निम्नलिखित: MVC के लिए, आप MVC में MVC Reference

प्रयोग में कुछ स्पष्ट पैटर्न भी पढ़ सकते हैं:

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

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

  • View Helper - दृश्य में प्रस्तुति से कोड को अलग करने में सहायता के लिए वसंत में कई कस्टम जेएसपी टैग और वेग मैक्रोज़ हैं।

+0

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

+8

मुझे नहीं लगता कि वसंत बीन्स के लिए सिंगलटन लागू करता है। ध्यान दें कि एक सिंगलटन स्कोप्ड बीन में प्रति उदाहरण संदर्भ ** एक उदाहरण होगा **। इसलिए, यदि आपके एप्लिकेशन में दो वसंत संदर्भ हैं, तो वे एक ही सिंगलटन बीन 'फू' लोड करते हैं और आप प्रति संदर्भ 'Foo'' का उदाहरण पुनर्प्राप्त करते हैं, तो आपको दो अलग-अलग ऑब्जेक्ट संदर्भ मिलेंगे। इसके बजाए, यहां लागू डिजाइन पैटर्न [फ्लाईवेट] है (http://en.wikipedia.org/wiki/Flyweight_pattern) –

+0

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

10

और हां निर्भरता इंजेक्शन की, या आईओसी (नियंत्रण के उलट), जो पूरी BeanFactory/ApplicationContext सामान के लिए महत्वपूर्ण है।

4

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

6

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

0

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

1

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

1

ऑब्जर्वर-नमूदार: यह ApplicationContext की घटना तंत्र में प्रयोग किया जाता है

0

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

3

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

संबंधित मुद्दे