如果說數學是思維的體操,那設計模式就是面向對象編程思維的體操;
簡易計算器類結構圖:
操作類,定義兩個操作數,並聲明抽象方法getResult(),具體實現由子類完成;
public abstract class Operation {
private double numberA;
private double numberB;
public abstract double getResult() throws Exception;
}
加法操作類,實現抽象方法;
public class OperationAdd extends Operation {
@Override
public double getResult() {
return getNumberA() + getNumberB();
}
}
public class OperationDiv extends Operation {
@Override
public double getResult() throws Exception {
if(getNumberB() == 0) {
throw new Exception("被除數不能爲0!");
}
return getNumberA() / getNumberB();
}
}
生成操作對象的工廠類:
public class OperationFactory {
public static Operation createOperation(String operate) throws Exception {
Operation operation = null;
switch(operate.trim()) {
case "+":
operation = new OperationAdd();
break;
case "-" :
operation = new OperationSub();
break;
case "*" :
operation = new OperationMul();
break;
case "/" :
operation = new OperationDiv();
break;
default:
throw new Exception("輸入的運算符號有誤!");
}
return operation;
}
}
客戶端代碼:
public class OperationMain {
public static void main(String[] args) throws Exception {
Operation operation = OperationFactory.createOperation("*");
operation.setNumberA(15);
operation.setNumberB(18);
System.out.println(operation.getResult());
}
}
如果再增加其他運算方法如開方,新建開方操作類,繼承操作類,並實現抽象方法,並且在工廠類的switch-case中增加分支即可!