/ / स्टैटिक क्लास और सिंगलटन - c ++, डिज़ाइन-पैटर्न, स्टैटिक, सिंगलटन, मोनोस्टेट

स्थैतिक वर्ग और सिंगलटन - सी ++, डिजाइन-पैटर्न, स्थिर, सिंगलटन, मोनोस्टेट

सभी स्थिर सदस्यों / विधियों के साथ एक ऐसा वर्ग नहीं है, जो एक प्रकार की सिंगलटन डिज़ाइन पद्धति है? क्या ऐसी कक्षाओं के विशेष रूप से कोई नुकसान है? विस्तृत विवरण से मदद मिलेगी।

उत्तर:

उत्तर № 1 के लिए 17

इस तरह के वर्ग को ए के रूप में जाना जाता है monostate - यह एक सिंगलटन से कुछ अलग है।

एक सिंगलटन के बजाय एक मोनोस्टेट का उपयोग क्यों करें? में उनके मूल पेपर पैटर्न पर, बेल और क्रॉफर्ड ने तीन कारण बताए (मेरे द्वारा परिभाषित):

  • अधिक प्राकृतिक एक्सेस सिंटैक्स
  • सिंगलटन के पास नाम की कमी है
  • से वारिस करना आसान है

मुझे स्वीकार करना चाहिए, मैं इनमें से किसी को भी विशेष रूप से सम्मोहक नहीं पाता। दूसरी ओर, यह निश्चित रूप से नहीं है और भी बुरा सिंगलटन की तुलना में।


जवाब के लिए 15 № 2

रॉबर्ट सी। मार्टिन ने लिखा है लेख कुछ समय पहले मोनो राज्य पैटर्न और सिंगलटन पैटर्न के बीच अंतर के बारे में।


जवाब के लिए 2 № 3

लॉगिंग कक्षाओं के एक परिवार पर विचार करें। वे सभी "LogMessage (संदेश, फ़ाइल, लाइन_नंबर) को लागू करते हैं। कुछ स्टाडर को संदेश भेजते हैं, कुछ डेवलपर्स के सेट पर ईमेल भेजते हैं, कुछ संदेश-आवृत्ति तालिका में विशेष संदेश की गिनती बढ़ाते हैं, कुछ मार्ग / देव / अशक्त करने के लिए रनटाइम के दौरान, प्रोग्राम अपने तर्क सदिश, रजिस्ट्री, या पर्यावरण चर की जाँच करता है जिसके लिए लॉगिंग तकनीक का उपयोग करना और एक उपयुक्त वर्ग से ऑब्जेक्ट के साथ लॉगिंग सिंगलटन को इंस्टैंट करना संभवतया ऐसा करने के लिए एंड-यूज़र-सप्लाई डीएलएल को लोड करना है। एक शुद्ध स्थिर सिंगलटन के साथ डुप्लिकेट करना कठिन है।


उत्तर के लिए 1 № 4

सभी स्थिर सदस्यों / विधियों के साथ वर्ग एक प्रकार का सिंगलटन डिज़ाइन पैटर्न

क्लास - पैटर्न नहीं। जब हम कक्षाओं के बारे में बात करते हैं तो हम कक्षा कह सकते हैं औजार पैटर्न।


स्थैतिक कार्य - सदस्य कार्य नहीं हैं, वे वैश्विक कार्यों पर समान हैं। शायद आप किसी भी वर्ग की जरूरत नहीं है?

कोट फ़ॉर्म विकिपीडिया:

सॉफ्टवेयर इंजीनियरिंग में, सिंगलटन पैटर्न एक डिजाइन पैटर्न है एक के तात्कालिकता को प्रतिबंधित करने के लिए इस्तेमाल किया एक वस्तु के लिए कक्षा।

इस परिभाषा के अनुसार आपका कार्यान्वयन सिंगलटन कार्यान्वयन नहीं है - आप सामान्य विचार का उपयोग नहीं करते हैं एक (या विस्तारित परिभाषा में कई) वर्ग का उदाहरण.

लेकिन कभी-कभी (हमेशा नहीं) सभी स्थिर कार्यों और एकल पैटर्न के साथ वर्ग का उपयोग - सार्थक अंतर नहीं है।


जवाब के लिए 0 № 5

एक सिंगलटन के लिए सभी कंस्ट्रक्टर को निजी होना चाहिए, ताकि आप केवल एक फ़ंक्शन के माध्यम से पहुंच सकें। लेकिन आप इसे बहुत करीब से देख रहे हैं।