package com.simpleFactory; /** * 运算类 * @author Administrator * */ public class Operation { private double numberA; private double numberB; public double getResultValue(){ return 0.0; } public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; } }
package com.simpleFactory; /** * 加法实现方式 * @author Administrator * */ public class Addition extends Operation { @Override public double getResultValue() { return getNumberA() + getNumberB(); } }
package com.simpleFactory; /** * 减法实现方式 * @author Administrator * */ public class Subtracter extends Operation { @Override public double getResultValue() { return getNumberA() - getNumberB(); } }
package com.simpleFactory; /** * 简单工厂类 * @author Administrator * */ public class SimpleFactory { private Operation operation; public Operation factoryOperate (String type ){ if ("+".equals(type)){ operation = new Addition(); } else if ("-".equals(type)){ operation = new Subtracter(); } return operation; } }
package com.simpleFactory; /** * 简单工厂类 ,利用反射实现 * @author Administrator * */ public class SimpleFactory_reflect { private Operation operation; public Operation factoryOperate (String classType ){ try { operation = (Operation)Class.forName("com.simpleFactory."+classType).newInstance(); } catch (Exception e) { e.printStackTrace(); } return operation; } }
重点的是在反射这里,通过反射机制可以不要在增加新功能时修改工厂类,只需要将新的方法函数名加进去就可以了。
时间: 2024-10-13 22:09:17