大话设计模式之简单工厂模式---------计算器

来源:互联网 发布:手机移动网络开关在哪 编辑:程序博客网 时间:2024/06/08 06:05
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 void setNumberA(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;    }}

运行计算的方法
import java.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分支就行了。
阅读全文
1 0
原创粉丝点击