c# 工厂模式的实战小技巧
总所周知,工厂模式违反了开放封闭原则,在这里就是要解决既要使用工厂模式也要遵守规则
话不多说直接上代码
private static Dictionary<string, MailInfoAbs> containers = new Dictionary<string, MailInfoAbs>();
/// <summary>
///
/// </summary>
/// <param name="name">实现类名</param>
/// <returns></returns>
public static MailInfoAbs Create(string name)
{
if(containers.ContainsKey(name))
{
return containers[name];
}
//这里的ExecutionClass就是命名空间
Type type = Type.GetType($"ExecutionClass.{name}");
if (type == null)
{
return null;
}
var instance = Activator.CreateInstance(type) as MailInfoAbs;
containers.Add(name, instance);
return instance;
}
}
通过反射去做对象创建,向外抛出一个变量,也就是类名
这样下来,别人想加什么类就不需要去修改这个方法里面的代码,可以通过变量去实例化了,完美遵守了开放封闭原则
工厂设计模式与反射 ,强强练手,天下无敌啊哈哈哈
细心的朋友还能看到我这里其实也有单列模式的实现