大話設計模式之簡單工廠模式---------計算器
阿新 • • 發佈:2019-01-09
Operation類 計算的父類 提供輸入的計算引數和獲取結果的方法,用於被子類具體計算方法繼承
package com.dahua.caculator; /** * Created by walle * 2017/10/11.14:46 * good good study! */ public class Operation { private double numberA; private double numberB; public double getNumberA() { return numberA; } public voidsetNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; } public double getResult() { double result = 0; return result; } }
package com.dahua.caculator; /** * Created by walle * 2017/10/11.14:50 * good good study! */ public class OperationAdd extends Operation { @Override public double getResult() { double result = 0; result = getNumberA()+getNumberB(); return result; } }
子類除法計算類
/** * Created by walle其他計算類自己寫吧工廠類 根據提供的運算子決定呼叫哪個計算類* 2017/10/11.15:26 * good good study! */ public class OperationDiv extends Operation { @Override public double getResult() { double result =0; if(getNumberB()==0){ throw new RuntimeException("除數不能為0"); } result = getNumberA()/getNumberB(); return result; } }
package com.dahua.caculator; /** * Created by walle * 2017/10/11.14:52 * good good study! */ public class OperationFactory { public static Operation createOperate(String operate) { Operation operation = null; switch (operate) { case "+": operation = new OperationAdd(); break; case "-": operation = new OperationSub(); break; case "/": operation = new OperationDiv(); break; } return operation; } }
執行計算的方法
importjava.util.Scanner; /** * Created by walle * 2017/10/11.15:00 * good good study! */ public class Caculator { public static void main(String[] args) { Operation operation; Scanner scanner = new Scanner(System.in); String operate = scanner.next(); System.out.println("您輸入的運算子是:"+operate); operation = OperationFactory.createOperate(operate); Double numberA = scanner.nextDouble(); System.out.println("您輸入的第一個數字是:"+numberA); Double numberB = scanner.nextDouble(); System.out.println("您輸入的第二個數字是:"+numberB); operation.setNumberA(numberA); operation.setNumberB(numberB); double result = operation.getResult(); System.out.println("輸出結果是:"+result); } }
如果後續需要其他的運算方法只需要寫一個運算類繼承Operation類,並且在工廠類中加入switch分支就行了。