सिंगलटन डिज़ाइन पैटर्न DI के साथ बाधाओं पर है। हालांकि सिंगलटन को खोलना संभव है कि DI और Open/Closed Principle समझने लगते हैं, यह सिंगलटन को इतना बदल देगा कि यह लगभग सिंगलटन होने से रोकता है।
थ्रेड सुरक्षा एक बड़ी समस्या है जो कि जब आप सिंगलटन खोलना शुरू करते हैं तो दिमाग में आता है।
अपने दायरे पर विचार किए बिना बस अपनी सेवाओं और कक्षाओं को परिभाषित करना बेहतर है। यदि आपके पास एक ऑब्जेक्ट है जिसे आप एकाधिक उपभोक्ताओं के बीच साझा करना चाहते हैं, तो अधिकांश डी कंटेनरों में सिंगलटन आजीवन की अवधारणा है, जो किसी भी कमी से पीड़ित बिना सिंगलटन डिज़ाइन पैटर्न के लाभों की नकल करता है।
संक्षेप में: सिंगलेट्स बुरा हैं और उन्हें टालना चाहिए।
Abstract Factory दूसरी ओर, बहुत DI प्रयोजनों के लिए उपयोगी है।
स्रोत
2009-12-16 19:55:32
सिंगलेट्स कुछ ऐसा है जो मैं अक्सर उपयोग करता हूं, लेकिन इसे पढ़ रहा है, ऐसा लगता है कि मुझे अपनी रणनीति बदलनी होगी! मैंने उन्हें कुछ स्थितियों में काफी उपयोगी पाया ... लेकिन मैं देख सकता हूं कि आप थ्रेड सुरक्षा से कहां से आ रहे हैं। –
थ्रेड सुरक्षा एक बात है, लेकिन मुख्य समस्या ओपन/क्लोज़ड सिद्धांत का उल्लंघन है। –
यदि मैं एक सिंगलटन के दायरे को प्रबंधित करने के लिए एक डी कंटेनर का उपयोग करता हूं तो वह ओसीपी का उल्लंघन क्यों करता है? क्योंकि मैं कार्यान्वयन के लिए स्थैतिक तरीकों पर भरोसा नहीं करता हूं, फिर भी मैं इसे उपclass कर सकता हूं, मुझे लगता है कि सिंगलटन के लिए एक डी कंटेनर का उपयोग करने से मुझे ओसीपी को संरक्षित करने की सुविधा मिलती है। ? –