题目要求:
设计一个可以实现+、-、*、/ 四种运算的简单计算器。
UML图:

代码:
//工厂类:
//包含逻辑判断,负责创建四种不同的操作类
//依赖于操作类
//ps:jdk1.8中不支持switch
public class OperFactory {
public static Operation createOperation(String operate){
Operation oper=null;
if(operate.equals("+")){
oper=new OperAdd();
}else
if(operate.equals("-")){
oper=new OperSub();
}else
if(operate.equals("*")){
oper=new OperMul();
}else
if(operate.equals("+")){
oper=new OperDiv();
}
return oper;
}
}
//操作类--父类
//包含子类相同属性与方法
public class Operation {
protected double numA;
protected double numB;
public double getNumA() {
return numA;
}
public void setNumA(double numA) {
this.numA = numA;
}
public double getNumB() {
return numB;
}
public void setNumB(double numb) {
this.numB = numb;
}
public double GetResult() throws Exception{
double result=0;
return result;
}
}
package _4Operation;
public class OperAdd extends Operation {
public double GetResult(){
double result=numA+numB;
return result;
}
}
//加法操作类
public class OperSub extends Operation {
public double GetResult(){
double result=numA-numB;
return result;
}
}
//乘法操作类
public class OperMul extends Operation {
public double GetResult(){
double result=numA*numB;
return result;
}
}
//除法操作类
//抛出分母为0的异常
public class OperDiv extends Operation {
public double GetResult() throws Exception{
if(numB==0) throw new Exception("除数不可为0");
else{
double result=numA/numB;
return result;
}
}
}
测试代码:
public class Main {
public static void main(String[] args) throws Exception {
Operation oper;
oper=OperFactory.createOperation("+");
oper.setNumA(1);
oper.setNumB(2);
System.out.println(oper.GetResult());
}
}
测试结果:

本文通过简单工厂模式设计了一个支持加减乘除四种运算的简单计算器。文章包含题目要求、UML图、具体实现代码以及详细的测试代码和测试结果。

2万+

被折叠的 条评论
为什么被折叠?



