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();

我想到了一个接口,但我不知道如何实现这个......如果我说疯了,我会简单地改变调用:D

4

2 回答 2

12

你想要一个工厂模式

所以你的工厂是

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

实例

public class MyNonStaticClass1 : IMyNonStaticClassBase
{
    //
}

界面

public interface IMyNonStaticClassBase
{
   void MyMethod();
}
于 2013-10-02T16:34:48.103 回答
1

我们使用 (Windsor Castle) https://www.nuget.org/packages/Castle.Windsor作为工厂容器。

是同一个校长。

每个单独的接口可以有许多实现,但只有一个在运行时与工厂中的接口相关联。

您需要做的就是在需要时交换工厂级别的实现类。

如果您希望优化代码(即实现类),这是一个非常有用的工具,因为您可以安全地知道,如果您在新的实现类中发现任何错误,您可以简单地将实现替换为预先存在的一。

于 2013-10-02T16:45:44.813 回答