2013-10-02 9 views
6

कल्पना करें कि आपके पास अपने पूरे एप्लिकेशन से पहुंचने के लिए कुछ विधियां हैं। इसके लिए एक स्थिर वर्ग आदर्श है।इंटरफ़ेस द्वारा स्थिर वर्ग का उपयोग करें?

public static class MyStaticClass 
{ 
    public static void MyMethod() 
    { 
     // Do Something here... 
    } 
} 

लेकिन शायद भविष्य में मैं एक और स्थैतिक वर्ग में स्थिर तरीकों का दूसरा कार्यान्वयन जोड़ूंगा।

public static class MyStaticClass2 
{ 
    public static void MyMethod() 
    { 
     // Do Something here... 
    } 
} 

वहाँ स्थिर MyStaticClass.MeMethod(); से MyStaticClass2.MyMethod(); के लिए कॉल को बदले बिना मेरे अन्य कोड में इस्तेमाल किया वर्ग बदलने के लिए एक तरीका है?

मैं एक अंतरफलक के बारे में सोचा, लेकिन मैं यह कैसे लागू करने के लिए पता नहीं है ... अगर मैं पागल बात कर रहा हूँ यह कहना और मैं बस कॉल बदल देंगे: डी

+0

नहीं, स्थिर स्तर पर कोई इंटरफेस नहीं है। आप 'MyStaticClass.MeMethod' के बॉडी को टिप्पणी कर सकते हैं, और यदि आप जल्दी में हैं तो' MyStaticClass2' पर कॉल अग्रेषित करें;) – BartoszKP

+0

आप MyMethod() को किसी अन्य स्थिर वर्ग में डाल सकते हैं, इस तरह आप इसे दोनों से एक्सेस कर सकते हैं आपके वर्तमान स्थैतिक वर्गों का। – frenchie

उत्तर

11

आप एक factory pattern

चाहते

तो अपने कारखाने

public static MyStaticClassFactory 
{ 
    public static IMyNonStaticClassBase GetNonStaticClass() 
    { 
     return new MyNonStaticClass1();  
    } 

} 

उदाहरण

public class MyNonStaticClass1 : IMyNonStaticClassBase 
{ 
    // 
} 

बौद्धिक अत्याधुनिक है rface

public interface IMyNonStaticClassBase 
{ 
    void MyMethod(); 
} 
+0

आप एक डी कंटेनर का भी उपयोग कर सकते हैं (आपके आवेदन की जटिलता के आधार पर)। –

+0

मुझे DI के बारे में बहुत कुछ पता नहीं है, लेकिन मुझे लगता है कि यह मेरे लिए बहुत जटिल होगा: डी –

1

हम (विंडसर कैसल) https://www.nuget.org/packages/Castle.Windsor का उपयोग कारखाने कंटेनर के रूप में।

यह वही प्रिंसिपल है।

आप प्रति व्यक्ति इंटरफेस के लिए कई कार्यान्वयन कर सकते हैं, लेकिन केवल एक ही फैक्ट्री में रन-टाइम पर इंटरफ़ेस से जुड़ा हुआ है।

आपको केवल इतना करना है कि जब आपको आवश्यकता हो तो फैक्टरी स्तर पर कार्यान्वयन कक्षा को स्वैप करें।

यह वास्तव में उपयोगी उपकरण है यदि आप अपने कोड को अनुकूलित करना चाहते हैं, यानी एक कार्यान्वयन वर्ग, क्योंकि आपको यह जानने की सुरक्षा है कि अगर आपको अपने नए कार्यान्वयन वर्ग में कोई भी बग मिलती है, तो आप आसानी से कार्यान्वयन को स्वैप कर सकते हैं पूर्व मौजूदा एक।

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