2008-09-30 17 views
5

यहां पर लिंक सूचीबद्ध करता है ([http://www.yoda.arachsys.com/csharp/singleton.html ][1]) सी # में कुछ सिंगलटन पैटर्न। लेख में यह स्पष्ट भी बताया गया है कि एक सिंगलटन पैरामीटर स्वीकार करने के लिए नहीं है जो "अन्यथा उदाहरण के लिए दूसरा अनुरोध है लेकिन एक अलग पैरामीटर के साथ समस्याग्रस्त हो सकता है"। इसका मतलब है कि कक्षा के काम को पाने के लिए आपको आवश्यक किसी भी पैरामीटर को संपत्ति के रूप में प्रेरित किया जाना चाहिए।पैरामीटरेटेड सिंगलटन पैटर्न

मुझे यह जानकर उत्सुकता है कि वहां कोई पैरामीटरयुक्त सिंगलटन डिज़ाइन पैटर्न हैं या नहीं। संपत्ति के रूप में मूल्यों को स्वीकार करना उपभोक्ता को कुछ भी लागू नहीं करता है।

उत्तर

3

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

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

1

उसके अर्थ यह है कि कोई भी पैरामीटर आप जरूरत वर्ग काम कर पाने के लिए एक संपत्ति के रूप में प्रेरित किया जाना चाहिए।

आदर्श रूप से सिंगलटन वर्ग बाहरी कोड पर निर्भर नहीं होना चाहिए।

यदि आपको सिंगलटन कन्स्ट्रक्टर को अतिरिक्त जानकारी प्रदान करने की आवश्यकता है, तो आप केवल ऑब्जेक्ट्स का पूल बना सकते हैं।

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

असल में आपके पास एक क्लास फैक्ट्री होगी। यह एक ही पैरामीटर के लिए एक ही वस्तु को वापस कर देगा।

इस मामले में आपके पास एन सिंगलटन ऑब्जेक्ट्स होंगे - यानी अलग-अलग राज्यों वाले ऑब्जेक्ट्स को पूरी तरह से अलग-अलग उदाहरणों के रूप में माना जाएगा।

आप इनवर्जन ऑफ कंट्रोल कंटेनर में ऐसे सिंगलेट्स के उदाहरण पा सकते हैं।

उदाहरण के लिए आप कुछ सेवा कर सकते हैं जो अन्य सेवाओं पर निर्भर करता है। जब आप कंटेनर कॉल करते हैं। (सेवा का प्रकार) प्राप्त करें। डी कंटेनर स्वचालित रूप से आवश्यक पैरामीटर के साथ सेवा आवृत्ति प्रारंभ करेगा और इसे कॉलर पर वापस कर देगा। लेकिन यह सेवा उदाहरण सिंगलटन बन जाता है - आप एक ही पैरामीटर के साथ एक और सेवा बनाने में सक्षम नहीं होंगे।

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