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

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分支就行了。

猜你喜欢

转载自blog.csdn.net/zlkjzxj/article/details/78204008
今日推荐