एक सिंगलटन बनाम सेवा लोकेटर का उपयोग करने के फायदे और नुकसान क्या हैं? मैंने पढ़ा है कि सिंगलेट्स खराब हैं लेकिन मुझे आश्चर्य है कि क्या सेवा लोकेटर आमतौर पर चीजों को करने का एक बेहतर तरीका होगा।सिंगलटन बनाम सेवा लोकेटर
6
A
उत्तर
9
दोनों दृष्टिकोण खराब हैं कि यह वर्ग अनुबंध से स्पष्ट नहीं है कि इसकी 'निर्भरताएं क्या हैं। यही है,
private void foo()
{
var x = SomeSingleton.Instance.GetX();
var y = ServiceLocator.GetService<IProvider>().GetY();
}
SomeSingleton
के लिए संदर्भ है और IProvider
गहरी कहीं अंदर दफन कर दिया।
हालांकि, शुद्ध सिंगलटन दृष्टिकोण की तुलना में, सेवा लोकेटर आम तौर पर ज्यादा है कि वे सरल केंद्रीकृत विन्यास, जीवन प्रबंधन, आदि उन्होंने यह भी बेहतर testability के लिए अनुमति देने के लिए अनुमति देने के में बेहतर कर रहे हैं (आप कर सकते हैं GetService<T>
को हमेशा नकली कॉल), कम युग्मन , चिंताओं को अलग करना, आदि
0
यदि परीक्षण योग्यता चिंता का विषय है, तो सेवा लोकेटर का उपयोग करके शुद्ध सिंगलेट बेहतर होता है।
संबंधित मुद्दे
- 1. सेवा लोकेटर बनाम निर्भरता इंजेक्शन
- 2. सेवा लोकेटर
- 3. सेवा लोकेटर फ्रेमवर्क 2
- 4. सेवा लोकेटर पैटर्न
- 5. निर्भरता इंजेक्शन बनाम सेवा लोकेटर का उपयोग कब करें
- 6. क्या सिंगलटन निष्पादक सेवा
- 7. वेबलॉगिक क्लस्टरर्ड सिंगलटन सेवा
- 8. जेडएफ 2 सेवा लोकेटर और निर्भरता इंजेक्शन
- 9. एंड्रॉइड: सेवा बनाम सिंगलटन का उपयोग कब करें?
- 10. व्यूमोडेल लोकेटर
- 11. सिंगलटन बनाम इरादे (एंड्रॉइड)
- 12. सत्र बनाम सिंगलटन पैटर्न
- 13. स्थैतिक वर्ग बनाम सिंगलटन वर्ग
- 14. पीएचपी: सिंगलटन बनाम स्टेटिक कक्षा
- 15. सी ++ सिंगलटन बनाम स्थिर तरीकों
- 16. आप सामान्य सेवा लोकेटर का उपयोग कब करेंगे?
- 17. एक सेवा लोकेटर के रूप में ऑटोफैक का उपयोग
- 18. verifiying मैं आईओसी, आईओसी कंटेनर, डी और सेवा लोकेटर
- 19. स्प्रिंग कंटेनर में सिंगलटन बीन्स बनाम सिंगलटन डिज़ाइन पैटर्न
- 20. डब्ल्यूसीएफ स्वयं होस्टेड सेवा में सिंगलटन सेवा निर्दिष्ट करें
- 21. एंड्रॉइड: सिंगलटन जिसका उपयोग गतिविधि और सेवा
- 22. यूनिटीकॉन्टेनर। रिसोलव या सर्विस लोकेटर। गेट इंस्टेंस?
- 23. डब्ल्यूसीएफ सेवा बनाम विंडोज सेवा
- 24. डब्ल्यूसीएफ सेवा बनाम विंडो सेवा
- 25. दूरस्थ सेवा बनाम। स्थानीय सेवा
- 26. सिंगलटन इंस्टेंस बनाम कक्षा के तरीके
- 27. सिंगलटन बनाम स्टेटिक वरीयता और दोष
- 28. रुबी में सिंगलटन बनाम मोनोस्टेट पैटर्न
- 29. एक सिंगलटन बनाम एक स्थिर संदर्भ
- 30. सी ++ सिंगलटन बनाम वैश्विक स्थैतिक वस्तु
मैं अब तक विरोधी पैटर्न पर विचार करने के लिए जाऊंगा, लेकिन मैं मानता हूं कि सेवा लोकेटर मामूली रूप से बेहतर है। सबसे अच्छा समाधान उचित निर्भरता इंजेक्शन को लागू करना होगा। –
जो मैं डी से समझता हूं, क्या उसे उन सभी ऑब्जेक्ट्स की आवश्यकता नहीं होती है जो सिंगलटन को सीधे पूर्व-सिंगलटन ऑब्जेक्ट का संदर्भ रखने के लिए उपयोग करते हैं? – djcouchycouch
हां, आपको उन्हें कन्स्ट्रक्टर के पैरामीटर के रूप में देना होगा (यदि आप कन्स्ट्रक्टर इंजेक्शन का उपयोग करते हैं, तो इसे आमतौर पर "आपकी निर्भरता घोषित करें" के रूप में जाना जाता है)। चीजों को थोड़ा सा आसान बनाने के लिए, आप नियंत्रण कंटेनर के उलटा उपयोग कर सकते हैं। Google Guice पर एक नज़र डालें। –