场景:制作一个简易可扩展计算器
public class Operation {
private double numberA;
private double numberB;
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;
}
public double getResult() throws Exception {
double result = 0;
return result;
}
}
这里只列举一个增加操作的类 可以进行扩展
体现为子类继承父类 重写(Overriding)父类方法的一种多态性体现
public class OperationAdd extends Operation {
@Override
public double getResult() {
return getNumberA() + getNumberB();
}
}
当扩展了操作类之后 这里工厂里面也需要添加一个case
这个工厂表示 当选确定某个具体操作时 生成这个操作的实例 并返回
public class OperationFactory {
public static Operation createOperation(String operate) {
Operation operation = null;
switch (operate) {
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
}
return operation;
}
}
// 首先拿到 触发 这个操作具体实例
Operation operation = OperationFactory.createOperation("/");
// 往这个实例塞值
operation.setNumberA(6);
operation.setNumberB(0);
// 调用这个实例的计算方法
System.out.println(operation.getResult());