題目要求:
設計一個可以實現+、-、*、/ 四種運算的簡單計算器。
UML圖:
代碼:
//工廠類:
//包含邏輯判斷,負責創建四種不同的操作類
//依賴於操作類
//ps:jdk1.8中不支持switch
public class OperFactory {
public static Operation createOperation(String operate){
Operation oper=null;
if(operate.equals("+")){
oper=new OperAdd();
}else
if(operate.equals("-")){
oper=new OperSub();
}else
if(operate.equals("*")){
oper=new OperMul();
}else
if(operate.equals("+")){
oper=new OperDiv();
}
return oper;
}
}
//操作類--父類
//包含子類相同屬性與方法
public class Operation {
protected double numA;
protected double numB;
public double getNumA() {
return numA;
}
public void setNumA(double numA) {
this.numA = numA;
}
public double getNumB() {
return numB;
}
public void setNumB(double numb) {
this.numB = numb;
}
public double GetResult() throws Exception{
double result=0;
return result;
}
}
package _4Operation;
public class OperAdd extends Operation {
public double GetResult(){
double result=numA+numB;
return result;
}
}
//加法操作類
public class OperSub extends Operation {
public double GetResult(){
double result=numA-numB;
return result;
}
}
//乘法操作類
public class OperMul extends Operation {
public double GetResult(){
double result=numA*numB;
return result;
}
}
//除法操作類
//拋出分母爲0的異常
public class OperDiv extends Operation {
public double GetResult() throws Exception{
if(numB==0) throw new Exception("除數不可爲0");
else{
double result=numA/numB;
return result;
}
}
}
測試代碼:
public class Main {
public static void main(String[] args) throws Exception {
Operation oper;
oper=OperFactory.createOperation("+");
oper.setNumA(1);
oper.setNumB(2);
System.out.println(oper.GetResult());
}
}
測試結果: