2013-10-02 14 views
6

immaginate di avere alcuni metodi che è necessario accedere da tutta l'applicazione. Una classe statica è l'ideale per questo.Usa la classe statica per interfaccia?

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

Ma forse in futuro aggiungerò una seconda implementazione dei metodi statici in un'altra classe statica.

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

C'è un modo per cambiare classe statica utilizzato nel mio altro codice senza cambiare le chiamate da MyStaticClass.MeMethod(); a MyStaticClass2.MyMethod();?

ho pensato a un'interfaccia ma non ho idea di come implementare questo ... Se sto parlando pazzo dirlo e io semplicemente cambiare le chiamate: D

+0

No, non ci sono interfacce sul livello statico. Puoi commentare il corpo 'del MyStaticClass.MeMethod', e inoltrare le chiamate a' MyStaticClass2' se siete di fretta;) – BartoszKP

+0

Si può mettere MyMethod() in un altro classe statica, in questo modo è possibile accedervi da entrambi delle tue attuali classi statiche. – frenchie

risposta

11

Volete un factory pattern

così la tua fabbrica è

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

} 

grado

public class MyNonStaticClass1 : IMyNonStaticClassBase 
{ 
    // 
} 

Inter rfaccia

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

È inoltre possibile utilizzare un contenitore DI (a seconda della complessità dell'applicazione). –

+0

Non so molto di DI, ma penso che sarebbe troppo complesso per me: D –

1

Usiamo (castello di Windsor) https://www.nuget.org/packages/Castle.Windsor come fabbrica Container.

E 'lo stesso principio.

Si possono avere molte implementazioni per interfaccia individuale, ma solo uno è sempre associato all'interfaccia nella fabbrica in fase di esecuzione.

Tutto quello che dovete fare è di swap la classe di implementazione a livello di fabbrica quando è necessario.

Questo è uno strumento davvero utile se si desidera ottimizzare il codice, ovvero una classe di implementazione, poiché si ha la sicurezza di sapere che se si riscontrano errori nella nuova classe di implementazione, è possibile semplicemente sostituire l'implementazione per quello preesistente.

Problemi correlati