【发布时间】:2016-07-17 21:13:16
【问题描述】:
public interface IDoSomething
public class ClassA : IDoSomething
public class ClassB : IDoSomething
public class ClassC : IDoSomething
我有一个由多个类实现的接口,还有一段代码需要解析一些数据,然后创建这些对象的新实例。现在我有一个很大的 switch 语句来确定使用哪个对象,但必须有更好的方法。
我希望能够创建还实现接口的新类,对类进行编码,并且永远不必重构代码(例如在 switch 语句中添加 case)。
实现这样的最佳实践是什么?
这是我当前(糟糕的)switch 语句的样子:
switch (flag)
{
case 1:
return new ClassA();
case 2:
return new ClassB();
case 3:
return new ClassC();
default:
return null;
}
【问题讨论】:
-
您可以使用字典..
dict = new Dictionary<int, Func<IDoSomething>> { { 1, () => new ClassA() } }然后您的方法变为(加上错误检查/不匹配键检查):return dict[flag]();
标签: c# interface coding-style extends conventions