本文使用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{
@Override
public double getResult() {
return getX()+getY();
}
}
四、Sub:
package 计算器;
/**
* 减
* @author Administrator
*
*/
public class Sub extends Operation{
@Override
public double getResult() {
return getX()-getY();
}
}
五、Mul
package 计算器;
/**
* 乘
* @author Administrator
*
*/
public class Mul extends Operation{
@Override
public double getResult() {
return getX()*getY();
}
}
六、Div
package 计算器;
/**
* 除
* @author Administrator
*
*/
public class Div extends Operation{
@Override
public 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);
}
}
九、架构图: