计算器再松耦合,将每一个计算都当做一个类,使用简单工厂模式进行实例化对象。
创建一个操作工厂类,根据传入的参数创建不同的操作对象(+、-、*、/)
public class OperationFactory {
public static Operation createOperate(String operate){
Operation oper = null;
switch (operate){
case "+":
oper = new AddOperation();
break;
case "-":
oper = new SubOperation();
break;
case "*":
oper = new MulOperation();
break;
case "/":
oper = new DivOperation();
break;
}
return oper;
}
}
再创建一个抽象操作父类:
public abstract class Operation {
private double numberA = 0d;
private double numberB = 0d;
public abstract double getResult() throws Exception;
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;
}
}
再根据不同的操作创建不同的操作类,重新getResult方法:
public class SubOperation extends Operation{
@Override
public double getResult() throws Exception {
double result = 0d;
result = getNumberA() - getNumberB();
return result;
}
}
最后再在前端使用多态的方式来创建操作类,得到结果:
public class ComputerV3 {
public static void main(String[] args) throws Exception {
Operation operation = OperationFactory.createOperate("+");
operation.setNumberA(2.0);
operation.setNumberB(3.0);
System.out.println(operation.getResult());
}
}