本文使用java的简单工厂设计模式实现简单计算器。
一、项目工程如下:
二、Operation类是计算器的父类:
package 计算器;/** * 计算器的父类 * @author Administrator * */public abstract class Operation {private double x;private double y;public abstract double getResult();public double getX() {return x;}public void setX(double x) {this.x = x;}public double getY() {return y;}public void setY(double y) {this.y = y;}} 三、Add类:
package 计算器;/** * 加 * @author Administrator * */public class Add extends Operation{@Overridepublic double getResult() {return getX()+getY();}} 四、Sub:
package 计算器;/** * 减 * @author Administrator * */public class Sub extends Operation{@Overridepublic double getResult() {return getX()-getY();}} 五、Mul
package 计算器;/** * 乘 * @author Administrator * */public class Mul extends Operation{@Overridepublic double getResult() {return getX()*getY();}} 六、Div
package 计算器;/** * 除 * @author Administrator * */public class Div extends Operation{@Overridepublic double getResult() {if (getY()==0) {System.out.println("除数不能为0");return -1;}else{return getX()/getY();}}} 七、工厂类:
package 计算器;public class OptionerFactory {public static Operation creatOperation(String oper){Operation operation=null;switch (oper) {case "+":operation=new Add();break;case "-":operation=new Sub();break;case "*":operation=new Mul();break;case "/":operation=new Div();break;}return operation;}} 八、测试类:
package 计算器;import java.util.Scanner;public class TestMain {public static void main(String[] args) {@SuppressWarnings("resource")Scanner scanner=new Scanner(System.in);System.out.println("输入第一个数");double x=scanner.nextInt();System.out.println("输入操作符");String oper=scanner.next();System.out.println("输入第二个数");double y=scanner.nextInt();Operation operation = OptionerFactory.creatOperation(oper);operation.setX(x);operation.setY(y);double result = operation.getResult();System.out.println("结果:"+result);}}
九、架构图: