简单计算器【简单工厂模式】

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

题目要求:

          设计一个可以实现+、-、*、/ 四种运算的简单计算器。

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());
	}

}

测试结果:

 

       

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值