簡單計算器【簡單工廠模式】

題目要求:

          設計一個可以實現+、-、*、/ 四種運算的簡單計算器。

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());
	}

}

測試結果:

 

       

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章