के साथ सिंगलटन मुझे कुछ तर्कों के साथ तत्काल होने के लिए एक सिंगलटन कक्षा की आवश्यकता है। जिस तरह से मैं अब यह कर रहा हूँ है:पैरामीटर
class SingletonExample
{
private SingletonExample mInstance;
//other members...
private SingletonExample()
{
}
public SingletonExample Instance
{
get
{
if (mInstance == null)
{
throw new Exception("Object not created");
}
return mInstance;
}
}
public void Create(string arg1, string arg2)
{
mInstance = new SingletonExample();
mInstance.Arg1 = arg1;
mInstance.ObjectCaller = new ObjectCaller(arg2);
//etc... basically, create object...
}
}
उदाहरण 'देर' बनाई गई है, जिसका अर्थ है मैं अनुप्रयोग स्टार्टअप पर जरूरत सभी तर्क नहीं है।
आम तौर पर मुझे विधि कॉल के क्रम को मजबूर करना पसंद नहीं है, लेकिन मुझे यहां एक और तरीका नहीं दिख रहा है। आईओसी या तो इसे हल होगा नहीं, क्योंकि मैं कहाँ कंटेनर में रजिस्टर कर सकते हैं, मैं भी कॉल कर सकते हैं बनाएँ() ...
आप इस एक ठीक परिदृश्य पर विचार करते हैं? क्या आपके पास कुछ और विचार है?
संपादित: मुझे पता है कि मैं क्या एक उदाहरण के रूप में लिखा था कि यह सुरक्षित थ्रेड नहीं है, धागा सुरक्षित प्रश्न
है कि * * एक सिंगलटन नहीं। पारस्परिक बहिष्कार कहां है? (यानी 'ताला')। इसके अलावा उदाहरण के लिए आपका 'गेटर' उदाहरण बनाना चाहिए, सीटीओ नहीं - यह पूरा बिंदु है। – RPM1984
मैं RPM1984 से सहमत हूं, यह सिंगलटन नहीं है। क्या आपके तर्क बदल सकते हैं या वे आपके आवेदन के जीवनकाल के दौरान समान होंगे? एक सिंगलटन कुछ चर पर निर्भर नहीं होना चाहिए, यह विन्यास या किसी अन्य सिंगलटन पर निर्भर हो सकता है। हालांकि, वास्तव में अपने डिजाइन के माध्यम से सोचें और खुद से पूछें कि क्या यह एक सिंगलटन है जिसे आपको चाहिए। सिंगलटन का उपयोग करने से आपके डिजाइन के लिए वास्तव में बुरा है। –
यह सिंगलटन ठीक है, मुझे विश्वास है :) 'getter' उदाहरण नहीं बना सकते क्योंकि यह तर्क नहीं है - यह हो सकता था, लेकिन यह इसे इस तरह लिखने के लिए सिर्फ अधिक सुविधाजनक है। और, एक बार प्राप्त तर्क, परिवर्तन नहीं करते हैं। – veljkoz