2013-05-24 11 views
8

के बीच क्या अंतर है, मुझे दोनों के बीच कुछ भ्रम है।सिंगलटन और रजिस्ट्री डिज़ाइन पैटर्न

सिंगलटन
चेक उदाहरण मौजूद है अगर यह लौटने के लिए, या एक नया बनाएँ।

रजिस्ट्री
चेक उदाहरण मौजूद है अगर यह लौटने के लिए, या एक नया बना सकते हैं और यह दुकान।

उनके बीच क्या अंतर है?

+1

रजिस्ट्री सिंगलटन पैटर्न लागू करता है। –

+0

@ जॉन कोंडे नहीं, यह नहीं है। या लीस पर करने की जरूरत नहीं है। –

+0

जहां तक ​​मैं समझता हूं, एक रजिस्ट्री उदाहरण बनाने की अनुमति नहीं देती है। इसका उद्देश्य यह है कि रजिस्ट्री के अधिकांश ग्राहकों से दूर सामानों को कैसे बनाया जाना चाहिए, इसका ज्ञान कहीं और हो सकता है। आप जो तुलना करते हैं वह एक कारखाने और रजिस्ट्री का संयोजन होता है, जो मुख्य रूप से रजिस्ट्री के उद्देश्य को हरा देता है। स्वीकृत उत्तर की तुलना में – Stein

उत्तर

8

दोनों उदाहरण नियंत्रण के बारे में हैं। अंतर यह है कि सिंगलटन किसी दिए गए वर्ग के केवल एक उदाहरण की अनुमति देता है जबकि रजिस्ट्री में उदाहरणों के लिए कुंजी का 1-1 नक्शा होता है। आम तौर पर, कुंजी एक वर्ग (या प्रतिनिधित्व) है और मूल्य उस वर्ग का एक उदाहरण है।

उदाहरण के लिए, कोड इग्निटर फ्रेमवर्क प्रत्येक लाइब्रेरी/मॉडल/नियंत्रक/सहायक के उदाहरण के साथ एक रजिस्ट्री रखता है जिसे आप लोड करते हैं और हर बार उसी उदाहरण को वापस कर देते हैं।

1

एक रजिस्ट्री अलग है कि इसका मुख्य उद्देश्य आपको संबंधित वस्तुओं पर नेविगेट करने की अनुमति देना है। Martin Fowler देखें।

1

रजिस्ट्री परिभाषा: जब आप कोई ऑब्जेक्ट खोजना चाहते हैं तो आप आमतौर पर किसी अन्य ऑब्जेक्ट से शुरू करते हैं जिसके साथ इसका संबंध होता है, और इसे नेविगेट करने के लिए एसोसिएशन का उपयोग करें। इस प्रकार, यदि आप किसी ग्राहक के लिए सभी ऑर्डर ढूंढना चाहते हैं, तो आप ग्राहक ऑब्जेक्ट से शुरू करते हैं और आदेश प्राप्त करने के लिए उस पर एक विधि का उपयोग करते हैं। हालांकि, कुछ मामलों में आपके पास शुरू करने के लिए उचित वस्तु नहीं होगी। आप ग्राहक के आईडी नंबर को जान सकते हैं लेकिन संदर्भ नहीं है। इस मामले में आपको किसी प्रकार की लुकअप विधि की आवश्यकता होती है - एक खोजक - लेकिन सवाल बनी हुई है: आप खोजक को कैसे प्राप्त करते हैं?

एक रजिस्ट्री अनिवार्य रूप से एक वैश्विक वस्तु है, या कम से कम यह एक जैसा दिखता है - भले ही यह वैश्विक नहीं है क्योंकि यह appear हो सकता है।

सिंगलटन परिभाषा: कभी-कभी कक्षा के लिए केवल एक उदाहरण होना महत्वपूर्ण है। उदाहरण के लिए, एक सिस्टम में केवल एक विंडो प्रबंधक होना चाहिए (या केवल एक फ़ाइल सिस्टम या केवल एक प्रिंट स्पूलर)। आमतौर पर सिंगलटन का उपयोग आंतरिक या बाहरी संसाधनों के केंद्रीकृत प्रबंधन के लिए किया जाता है और वे themselves तक पहुंच का वैश्विक बिंदु प्रदान करते हैं।

इन परिभाषाओं के आधार पर उनका उपयोग पूरी तरह से अलग है।

0

रजिस्ट्री और सिंगलटन के बीच मुख्य अंतर यह है कि सिंगलटन हमें एक समय में एक वर्ग का एक उदाहरण बनाने की अनुमति देता है, जबकि रजिस्ट्री हमें उसी कक्षा के कई उदाहरण बनाने की अनुमति देती है।

+0

बहुत नया नहीं है ,-) है – kleopatra

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