2010-01-30 11 views
6

मैं एक सिंगलटन कक्षा से अन्य वर्गों में कैसे प्राप्त करूं जो समान कार्यक्षमता की आवश्यकता है? क्या ऐसा कुछ समझ जाएगा?सिंगलटन विरासत

उत्तर

0

मुझे किसी ने सही करने के लिए स्वतंत्र लग रहा है, लेकिन जिस तरह से मैं इसे समझते हैं, और यह एक बार के साथ एक त्रुटि थी:

public class BaseClass 
{ 
    protected static List<string> ListOfSomething { get; set; } 
} 

public class ChildClass 
{ 
    protected static List<int> ListOfSomethingElse { get; set; } 
} 

public class AnotherChildClass 
{ 
    protected static List<int> ListOfSomethingElse { get; set; } 
} 

बच्चे कक्षाओं के दोनों साझा करेंगे हीListOfSomething, वे नहीं होगा उनकी अपनी प्रति। उसी स्थिर को सभी बच्चों के बीच साझा किया जाएगा। यह सिंगलटन व्यवहार और विरासत का झुकाव है। जैसा कि रेशमी ने कहा था ... आपको बस यह नहीं करना चाहिए, आप शायद इन पंक्तियों के साथ कुछ में भाग लेंगे।

यदि आप इस तरह के बारे में बात नहीं कर रहे हैं ... मुझे यकीन नहीं है कि आप किस सिंगलटन के बारे में बात कर रहे हैं, और एक उदाहरण बहुत मदद करेगा, क्योंकि सिंगलटन के पास बहुत सारे उपयोग हैं।

11

जॉन स्कीट wrote about this थोड़ी देर पहले। सिंगलटन के साथ विरासत के लाभों के कुछ प्राप्त करना संभव है, हालांकि नेस्टेड आंतरिक कक्षाओं का उपयोग करने से थोड़ा वांछित छोड़ दिया जाता है। इसमें अनंत विस्तारशीलता नहीं है, यह सिंगलटन रनटाइम पर अपना स्वयं का कार्यान्वयन चुनने के लिए केवल एक तकनीक है।

यथार्थ रूप से, सिंगलटन से विरासत में यह सब कुछ समझ में नहीं आता है, क्योंकि सिंगलटन पैटर्न का हिस्सा उदाहरण प्रबंधन है, और एक बार आपके पास पहले से ही मूल प्रकार का भौतिक उदाहरण है, तो इसमें से किसी को ओवरराइड करना बहुत देर हो गया है व्युत्पन्न प्रकार में। यहां तक ​​कि यदि आप कर सकते हैं, तो मुझे संदेह है कि यह एक ऐसे डिजाइन को जन्म दे सकता है जिसे समझना मुश्किल हो और परीक्षण/बनाए रखने के लिए और भी मुश्किल हो।

3

आप सिंगलटन से और "पुन: उपयोग" या टेम्पलेट्स (सी ++) या जेनेरिक (सी # .NET) का उपयोग करके कुछ ठीक ट्यूनिंग के लिए उत्तराधिकारी हो सकते हैं।

मैं अपने ब्लॉग (www.devartplus.com) इस विषय में पोस्ट की एक सेरी में पोस्ट किया है:

1) Basic singleton inheritance सी # .NET में

सी # .NET में 2) थ्रेड-सुरक्षित सिंगलटन विरासत

3) सी ++

में कई सिंगलटन कार्यान्वयन आपको उन लिंक पर जाने के लिए आमंत्रित किया जाता है, और आपकी राय के साथ साझा किया जाता है। शुभकामनाएँ।

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