本帖最后由 徐振升 于 2012-3-14 11:57 编辑
比如你有一个生成运算类简单工厂类(OperationFactory),一个运算父类(Operation)和加(AddOperation)减(SubOperation)两个运算子类
public class OperationFactory(string operation)
{
public static Operation getOperation(string operation)
{
Operation operate = null;
switch(operation)
{
case "+":
operate = new AddOperation();
break;
case "-":
operate = new SubOperation();
break;
}
return operate;
}
}
因为我的计算程序需要增加乘法功能,那我是不是除了增加一个乘法类(MulOperation)还需要在上面这个工厂方法中去增加case "*"来得到具体的运算类。
但是问题就来了,这样难道还要把工厂的运算方法代码给你去修改?这样不利于无维护。应为后面我可能还需要加除法或者乘方等等 或者自己的一个运算方式。
这时候就可以用反射来改造你的工厂让它可以动态的根据你用变量给它一个“程序集名称”和一个“程序集下的类名”得到你需要创建的类。
简单一句话就是 可以动态的生成你需要的类,不需要你去写逻辑判断我该生成那个类。
有解说不足的地方欢迎指出,共同进步。 |