c# – 工厂模式:枚举或类型?

前端之家收集整理的这篇文章主要介绍了c# – 工厂模式:枚举或类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在实现工厂或简单工厂时,使用Type而不是Enum来指定要实例化的类会有什么影响?

例如

public class SimpleFactory
{
 public static ITest Create(Type type)
 {
  if (type == typeof(ConcreteTest1))
   return new ConcreteTest1();
  if (type == typeof(ConcreteTest2))
   return new ConcreteTest2();

  throw new Exception("Invalid type");
 }
}

解决方法

使用枚举更具限制性,这意味着用户不太可能尝试使用不受支持的类型的工厂.

我发现在定义API以阻止将导致异常的使用模式时,尽可能做到最好.在这种情况下允许“类型”会打开数百万种调用函数方法,这将导致:

throw new Exception("Invalid type");

使用枚举将消除这一点.如果用户做了明显错误的话,枚举的唯一方法就是抛出.

猜你在找的C#相关文章