通过接口使用静态类?
想象一下,您需要从整个应用程序中访问一些方法。 静态类是理想的。
public static class MyStaticClass { public static void MyMethod() { // Do Something here... } }
但也许将来我会在另一个静态类中添加静态方法的第二个实现。
public static class MyStaticClass2 { public static void MyMethod() { // Do Something here... } }
有没有办法改变我的其他代码中使用的静态类而不更改MyStaticClass.MeMethod();
的调用MyStaticClass.MeMethod();
到MyStaticClass2.MyMethod();
?
我想到了一个界面,但我不知道如何实现这个……如果我说疯了就说出来,我只会改变电话:D
你想要一个工厂模式
所以你的工厂是
public static MyStaticClassFactory { public static IMyNonStaticClassBase GetNonStaticClass() { return new MyNonStaticClass1(); } }
例
public class MyNonStaticClass1 : IMyNonStaticClassBase { // }
接口
public interface IMyNonStaticClassBase { void MyMethod(); }
我们使用(温莎城堡) https://www.nuget.org/packages/Castle.Windsor作为工厂Container。
这是同一个校长。
每个接口可以有许多实现,但在运行时只有一个与Factory中的接口相关联。
您需要做的就是在需要时在工厂级别交换实现类。
如果您希望优化代码(即实现类),这是一个非常有用的工具,因为您可以安全地知道如果在新实现类中发现任何错误,您可以简单地将实现更换为预先存在的一。