एक संभावित डिजाइन कि एक अमूर्त वर्ग पर एक निजी निर्माता का प्रयोग करेंगे:
public abstract class BaseClass
{
private BaseClass(Object param)
{
//Do something with parameters
}
//Provide various methods that descendant classes will know how to perform
public static BaseClass FromObject(Object value)
{
//Based on object, choose which type of derived class to construct...
}
private class HiddenDerivedA : BaseClass
{
public HiddenDerivedA(Object value)
: base(value)
{
}
}
private class HiddenDerivedB : BaseClass
{
public HiddenDerivedB(Object value)
: base(value)
{
}
}
}
यह पैटर्न उपयोगी होती है, व्युत्पन्न कार्यान्वयन कसकर चयन तर्क के लिए युग्मित कर रहे हैं उनका निर्माण करने के लिए प्रयोग किया जाता है और आप अपने शेष कोड से उच्च मात्रा में इन्सुलेशन प्रदान करना चाहते हैं। यह आपको अन्य विरासतकर्ताओं का समर्थन करने की ज़िम्मेदारी से मुक्त करता है, जिनके बारे में आप स्पष्ट रूप से इरादे रखते हैं और आपको बेस क्लास से सभी व्युत्पन्न कक्षाओं में सभी निजी राज्यों का खुलासा करने की अनुमति मिलती है।
स्रोत
2010-08-11 00:05:12
2 में: आपका मतलब "यह" कीवर्ड है। "बेस" व्युत्पन्न कक्षाओं में है और निजी ctors को कॉल नहीं कर सकता है। –
@ जॉन: हाँ, thx। संपादित करेंगे –
@ जॉन, "आधार" निजी रचनाकारों को कॉल कर सकता है यदि व्युत्पन्न प्रकार व्युत्पन्न प्रकार का घोंसला वाला वर्ग है। –